2015-06-08 6 views
0

Я продолжаю получать ошибки, когда я пытаюсь щелкнуть элемент в списке, а затем попытаться запустить код. Это говорит мне что-то о преобразовании его в логическое, но я не совсем уверен. Я попробовал ToString(), но не повезло.Если оператор ListBox1.SelectedItem

Я не хочу, чтобы код запускался, если в списке не выбрано что-либо.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    If ListBox1.SelectedItem Then 
     ProgressBar1.Value = 0 
     Timer1.Start() 
     Button1.Enabled = False 

     System.Threading.Thread.Sleep(2000) 
     TextBox1.Refresh() 
     TextBox1.Text &= "Preparing" 
     TextBox1.Refresh() 
     System.Threading.Thread.Sleep(2000) 
     TextBox1.Refresh() 
     TextBox1.Text &= Environment.NewLine & "" 
     TextBox1.Refresh() 
     System.Threading.Thread.Sleep(2000) 
     TextBox1.Text &= Environment.NewLine & "" 

    Else 
     MsgBox("", 0, "") 
    End If 
End Sub 
+0

Что вы пытаетесь сделать с вашим первым IF. Это не имеет смысла так, как написано. Вы хотите войти, если элемент выбран и в другом, если ничего не выбрано? –

+1

Если 'Option Strict' был' On', этот код даже не мог компилировать, говоря, что он не знает, как отличить Object от Boolean в строке If (и это было бы большим ключом к проблеме) – Sehnsucht

ответ

0

ListBox.SelectedItem возвращает фактический выбранный элемент в ListBox, но оператор If требует выражения для вычисления в логическом (true или false). То, что вы ищете, вероятно:

If (ListBox.SelectedItems.Count > 0) Then 
+0

Блестящие работы, спасибо! –

+0

Спасибо! сделанный :) –

1

Попробуйте это ...

If ListBox1.SelectedItems.Count > 0 Then .... 

Также ваш, если вы используете, не составит ни к чему, кроме как для True вы можете захотеть изменить это ...

+0

Блестяще это работает, спасибо! –

+0

@CameronHowson, если это помогло, отметьте в качестве ответа и голосования. – Codexer

0

на основе кода, мое предположение, что вы только хотите, чтобы выполнить условный код, если ListBox1 имеет выбранный элемент. Но свойство ListBox.SelectedItem не может использоваться как логическое.

Вместо этого следует просто проверить выбранный индекс ListBox, как:

If ListBox1.SelectedIndex >= 0 Then 
    [...] 

Надеется, что это помогает! Дайте знать, если у вас появятся вопросы.

EDIT: В качестве альтернативы, если вы хотите сохранить больше текущего кода, вы могли бы сделать ваше состояние в сравнении из SelectedItem против Nothing:

If ListBox1.SelectedItem IsNot Nothing Then 
    [...]