2015-06-08 74 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',這段代碼甚至無法編譯,說它不知道如何在If行中將Object轉換爲布爾值(並且這將是解決問題的一個重要線索) – 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屬性不能用作這樣的布爾值。

相反,認爲只是檢查列表框的選擇指標,如:

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

希望這有助於!如果您有任何問題,請告訴我。

編輯:另外,如果您想保留更多的你當前的代碼,你可以讓你的病情進入一個比較SelectedItemNothing

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