ListBox 内のいくつかの項目を無効にする (灰色にする) 必要があったため、ここにあるカスタム コントロールを使用しています。
これが私の現在のコードです:
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
dtp.Columns.Add("key")
dtp.Columns.Add("value")
PopulateDataTable(dtp, "myTxt")
_dataView = New DataView(dtp)
'Custom ListBox
List1.ValueMember = "key"
List1.DisplayMember = "value"
List1.DataSource = _dataView
'Legacy ListBox
List2.ValueMember = "key"
List2.DisplayMember = "value"
List2.DataSource = _dataView
UpdateLanguageMenu()
End Sub
Private Function PopulateDataTable(dt As DataTable, resTxt As String)
Using sw As New StringReader(My.Resources.ResourceManager.GetObject(resTxt))
Do
Dim line As String = sw.ReadLine
If line Is Nothing OrElse line.Trim = String.Empty Then Exit Do
Dim strArr() As String
strArr = line.Split(",")
Dim row As DataRow = dt.NewRow()
row("key") = strArr(0)
row("value") = strArr(1)
dt.Rows.Add(row)
Loop
sw.Close()
End Using
End Function
List1
は Custom ListBox でありList2
、VS2012E に付属の ListBox です。
必要はありませんList2
。テストするためだけにあり、実行時に、List2
すべての値を正しくロードする代わりに、すべての行List1
を取得System.Data.DataRowView
します..
奇妙なことは、私がロードしている私のtxtが次のようなものであることです:
00A1,MyValue1
00A2,Myvalue2
00A3,MyValue3
ラベルもあり、ListBox で項目を選択するときに、カンマの前の最初の部分に変更Label.Text
するコードがあります。List.SelectedValue
そして、ラベルに表示されます。Custom ListBox 内のアイテムのみが表示されていません。
DataTableList1
を使用する代わりに、手動で入力すると機能します。
そして私は初心者なので、問題を見つけることができません。