我有一个扩展Listbox类的自定义用户控件。在其内部,我将覆盖OnSelectionChanged以添加/删除任何选定/未选定项目的装饰。当我使用鼠标选择项目时,这一切都有效,但是当我使用
以编程方式将项目添加到列表框时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
由于某种原因,第二个选项是触发事件而第一个选项不是。
答案 0 :(得分:0)
您需要先添加此行代码
myListBox.Items.Add(newItem)
答案 1 :(得分: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);
}