2016-12-05 97 views
0

我只是一個編碼的初學者,我想用datagridview以編程方式檢查checklistbox中的項目。如何使用datagridview vb.net檢查checklistbox項目?

數據網格視圖值用逗號分隔,如jhon,Metilda,saman,

檢查列表名稱爲chklistinput請幫我解決這個問題?

「完全編碼是這裏..............................

Private Sub TextBox10_TextChanged(sender As Object, e As EventArgs) Handles TextBox10.TextChanged 

'this is ok and searching as I want 

    Dim SearchV As String = TextBox10.Text 
    SearchV = "%" + TextBox10.Text + "%" 

    Me.PassIssuingRecordTableAdapter.FillBy(Me.Database4DataSet.PassIssuingRecord, SearchV) 


'But the problem bigins here 

    Dim areasback As String = DataGridView1.Rows(0).Cells(6).Value.ToString 
    Dim areasback1 As String() = areasback.Split(",") 

    For Each x In areasback1 
     For i = 0 To areasback.Count - 1 

      If chklistInput.Items(i).ToString() = x.ToString() Then 
       chklistInput.SetItemChecked(i, False) 
      End If 

     Next 
    Next 

End Sub 
+0

你想檢查項目還是不檢查項目? 'chklistInput.SetItemChecked(i,False)'將項目設置爲不檢查。讓它真實地檢查它。假設'areasback'中的項目數等於CheckListBox控件中的項目數可能很危險。 – LarsTech

+0

我嘗試了很多不同的方式,但沒有爲我工作。我再次嘗試了「真實」的說法。但結果相同。我需要從屬性菜單中更改任何內容嗎?有時在無法完成簡單代碼時會感到沮喪。請幫忙 ? – user3236873

+0

使用調試器。在第一個「for each」行停下來,運行代碼,停止時,將鼠標懸停在變量上以檢查值。 – LarsTech

回答

0

您必須循環在chklistInput.Items.Count - 1代替areasback.Count - 1

使用下面的代碼:

Dim areasback As String = DataGridView1.Rows(0).Cells(6).Value.ToString 
Dim areasback1 As String() = areasback.Split(",") 
Dim intCount as integer = 0 

For each str as string in areasback1 

    For intCount = 0 To chklistInput.Items.Count - 1 

     If chklistInput.Items(intCount).ToString() = str Then 
      chklistInput.SetItemChecked(intCount , True) 
     End If 

    Next 

Next 

chklistInput.Refresh() 

注:比較是區分大小寫的

+0

感謝您的快速回復。我使用確切的代碼,但沒有發生。可能是我在錯誤的地方添加了這段代碼。請指教我。 – user3236873

+0

看@LarsTech評論 – Hadi

+0

@hardi。謝謝你,我也試過。但最終的結果並沒有到來。 – user3236873