1

我有一个扩展 Listbox 类的自定义用户控件。在其中,我将覆盖 OnSelectionChanged 以将 Adorner 添加/删除到任何选定/未选定的项目。当我使用鼠标选择一个项目时,这一切都有效,但是当我使用以编程方式将项目添加到列表框时

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

出于某种原因,第二个选项会触发事件,而第一个选项则不会。

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 回答