2016-12-05 101 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