1

Listbox クラスを拡張するカスタム ユーザー コントロールがあります。その中で、OnSelectionChanged をオーバーライドして、選択/選択されていないアイテムに Adorners を追加/削除しています。これは、マウスを使用してアイテムを選択するとすべて機能しますが、プログラムでリストボックスにアイテムを追加すると、

myListBox.SelectedItems.Add(newItem) // newItem is already a member of myListBox.Items

OnSelectionChanged コードは実行しません。

更新:私が狂っていない限り(これは常に可能です)、親オブジェクトからこれを呼び出す間に動作に違いがあるようです

myListBox.SelectedItems.Add(newItem)

そして、私の拡張リストボックスクラス内のこのメソッド

Public Sub AddSelectedItem(newItem as Object)
    Me.SelectedItems.Add(newItem)
End Sub

何らかの理由で、2 番目のオプションはイベントをトリガーしていますが、最初のオプションはそうではありません。

4

2 に答える 2

0

最初にこのコード行を追加する必要があります

myListBox.Items.Add(newItem)
于 2012-06-26T14:58:10.873 に答える
0

ここでの解決策は、ListBox の拡張機能内から SelectedItems.Add() を呼び出すことです。

public class MyListBox : ListBox
{
public void AddSelectedItems(object newSelectedItem)
{
  // works
  this.SelectedItems.Add(newSelectedItem);
}
}

OnSelectionChanged イベントをトリガーします。

ウィンドウからこのように呼び出しても、イベントはトリガーされません

private sub SomeWindowMethod()
{
   // does not work
   this.MyListBoxInstance.SelectedItems.Add(newSelectedItem);
}
于 2012-06-29T15:23:02.360 に答える