0

リストボックスで選択したインデックスに問題があるようです。

リストボックスには、ユーザーの選択に応じてさまざまな項目が挿入されています。例は次のとおりです。

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "Item1")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "AND")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "Item2")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "AND")

LiIndex = ListBox1.Items.Count      
ListBox1.Items.Insert(LiIndex, "Item3")

これはすべて機能し、問題なく表示されます。私が抱えている問題は、2つのANDの2番目を選択した場合です。リストの2番目の「AND」をクリックしてからボタンをクリックしてメソッドを起動すると、選択されたインデックスは常に最初の「AND」のインデックスになります。

Dim listIndex as integer = ListBox1.SelectedIndex

理由はわかりません。リストボックス自体は常に2番目のリストを選択したものとして表示しますが、アクションは最初のリストに対して発生します。

私がどこで間違っているのかについてのアイデアは大歓迎です。

4

2 に答える 2

1

見た目は問題ありませんが、作成しているインデックスが間違っているか、ボタンなどをクリックしたときにリストボックスをリセットまたは選択解除している可能性があります...

私はこれを行い、それは機能しました。2番目の「AND」を選択すると(そしてよりクリーンな構文で)index=3になります。

ListBox1.Items.Insert(ListBox1.Items.Count, "Item1")
ListBox1.Items.Insert(ListBox1.Items.Count, "AND")
ListBox1.Items.Insert(ListBox1.Items.Count, "Item2")
ListBox1.Items.Insert(ListBox1.Items.Count, "AND")
ListBox1.Items.Insert(ListBox1.Items.Count, "Item3")
于 2012-01-18T11:48:15.883 に答える
0

達成したいことは何でも、ListBoxアイテムを直接処理することから始めるのは適切ではありません。コードのプロパティとしてObservableList(Of String)を使用し、リストをxamlでバインドする必要があります。
その後、コードは次のようになります。MyItemList.Add( "My Item")
問題は、コードでSelectedItemを使用するか、同じオブジェクトを2回表示しているという事実に起因する可能性があります(同じオブジェクトを2回表示するCheckBoxで奇妙な動作をしたことがあります) )データを格納するクラスを定義/使用することでそれを取り除くことができます:とにかく、それは単なる文字列ではありませんか?したがって、ToStringオーバーロードを使用してItemInfoクラスを表示するか、ItemInfoをDataTypeとして持つWindowリソースでDataTemplateを定義することができます。

<DataTemplate DataType="{x:Type l:ItemInfo}">
        <TextBlock Text="{Binding ItemText}" />
</DataTemplate>  

使用するコードでは、MyItemListがObervableList(Of ItemInfo):MyList.Add(New ItemInfo( "some text"、...))
になるため、同じアイテムが2回存在することはありません。

より多くの作業がありますが、ここでは、後でデータ/関数を追加するためのより確実な開始があります。

于 2012-01-21T18:45:36.357 に答える