2015-06-26 4 views
-1

У меня есть назначение, в котором пользователь вводит числа в список. Когда пользователь будет вводить цифры, он вычислит среднее и стандартное отклонения (наш профессор не хочет, чтобы мы использовали встроенные функции стандартного отклонения). Программа будет иметь контекстное меню, и это рекомендации по созданию меню: Вы должны создать подпрограмму, называемую SetMenu. Он используется для включения и отключения контекстного меню на основе содержимого списка. Когда список пуст, Clear отключен. Когда в списке есть хотя бы одно число, Clear включен. Когда ничего не выбрано, Удалить элемент отключен. Когда что-то выбрано, элемент Удалить включен. Вот где мне нужна помощь, создавая эту подпрограмму.ListBoxes в Visual Basic

Вот мой код:

Option Strict On 
Public Class Form1 

Private Sub AddBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddBtn.Click 
    ListBox.Items.Add(InputBox.Text) 
    InputBox.Text = "" 
End Sub 

Private Sub ComputeBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComputeBtn.Click 
    Dim sum, x, number, numberSum, subtractedNum As Integer 
    Dim average, insideRoot, squaredRoot As Double 


    For x = 0 To ListBox.Items.Count - 1 
     ListBox.SelectedIndex = x 

     number = Integer.Parse(ListBox.SelectedItem.ToString) 
     sum = sum + number 
     average = sum/ListBox.Items.Count 
    Next 
    AverageLbl.Text = average.ToString 

    For x = 0 To ListBox.Items.Count - 1 
     ListBox.SelectedIndex = x 
     number = Integer.Parse(ListBox.SelectedItem.ToString) 

     subtractedNum = CInt((number - average)^2) 
     numberSum = numberSum + subtractedNum 
     insideRoot = (numberSum/(ListBox.Items.Count - 1)) 
     squaredRoot = insideRoot^(1/2) 
    Next 
    DeviationLbl.Text = squaredRoot.ToString("N2") 

End Sub 

Private Sub ClearMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClearMenu.Click 
    ClearMenu.Enabled = False 
    SetMenu() 
    ListBox.Items.Clear() 
End Sub 

Private Sub DeleteMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DeleteMenu.Click 
    ListBox.Items.Remove(ListBox.SelectedItem) 
End Sub 

Private Sub InputBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InputBox.TextChanged 
    If IsNumeric(InputBox.Text) And InputBox.Text <> "" Then 
     AddBtn.Enabled = True 
    Else 
     AddBtn.Enabled = False 
    End If 
End Sub 

Private Sub SetMenu() 
    'Need help here 
End Sub 

End Class

+0

Мне нужна помощь в создании подпрограммы с именем SetMenu. Мне нужно включить элемент ClearMenu, если в списке есть хотя бы один элемент. И мне нужно включить элемент DeleteMenu, если в списке есть что-то, что было выбрано. – Jay

+1

Похоже, вам нужно проверить ListBox.Items.Count. Если это 0, отключите кнопку «Очистить». Если оно> 0, включите кнопку «Очистить». Затем проверьте ListBox.SelectedIndex. Если это -1, отключите Delete. Если это> = 0, включите Delete. – Capellan

+0

Каковы условия, которые мне нужно внести в оператор If? .. Я попытался сделать, если ListBox.Items.Count> 0, тогда ClearMenu.Enabled = True, и это заявление не сработало для меня, и поэтому я не знаю каково было мое состояние. – Jay

ответ

1

Как насчет:

Private Sub toggleContextMenuItems() 

    ClearToolStripMenuItem.Visible = (ListBox1.Items.Count > 0) 

    DeleteToolStripMenuItem.Visible = (ListBox1.SelectedIndex > -1) 

End Sub 

Затем вызовите этот метод, когда это необходимо.