[英]BindingList and ListBox behaviour
我有一個綁定到BindingList集合的ListBox。 這很好。
當第一個項目進入收藏集時,我唯一的悲傷發生了。 ListBox的默認行為是選擇該項目-但是,這不會引發SelectedIndexChanged事件。 我認為這是因為SelectedIndex最初設置為null。 在變為null以外的任何東西時,索引實際上並沒有改變; 而是分配。 如何停止選擇(突出顯示)添加到列表框的第一個初始項的默認行為?
如果我的假設是錯誤的,請說明一下?
更新資料
到目前為止,這是我代碼的核心部分。
public UavControlForm()
{
InitializeComponent();
_controlFacade = new UavController.Facade.ControlFacade();
UpdateFlightUavListBox();
}
private void UpdateFlightUavListBox()
{
lsbFlightUavs.DataSource = _controlFacade.GetFlightUavTally();
lsbFlightUavs.DisplayMember = "Name";
}
private static BindingList<FlightUav> _flightUavTally = new BindingList<FlightUav>();
public BindingList<FlightUav> FlightUavTally
{
get { return _flightUavTally; }
}
public void AddFlightUav(double[] latLonAndAlt)
{
FlightUav flightUav = new FlightUav();
flightUav.Latitude = latLonAndAlt[0];
flightUav.Longitude = latLonAndAlt[1];
flightUav.Altitude = latLonAndAlt[2];
_flightUavTally.Add(flightUav);
UtilStk.InjectAircraftIntoStk(flightUav.Name);
flightUav.SetFlightDefaults();
PlayScenario();
}
更新:
因此,設置lsbFlightUavs.SelectedIndex = -1
可解決此問題。 上面的方法AddFlightUav()
是從按鈕的OnClick處理程序中以第二種形式從主窗體中調用的。 當AddFlightUav()
方法返回時,如何從第二種形式調用lsbFlightUavs.SelectedIndex = -1
? 我知道我可以將ListBox設置為靜態,但這對我來說似乎是一種壞習慣。
使用WinForms,我實現了Singleton模式。 這使我能夠從第二個窗體訪問ListBox控件。
表格1
private static UavControlForm _instance = new UavControlForm();
private UavControlForm()
{
InitializeComponent();
}
public static UavControlForm Instance
{
get { return _instance; }
}
public ListBox FlightUavListBox
{
get { return lsbFlightUavs; }
}
表格2
UavControlForm.Instance.FlightUavListBox.SelectedIndex = -1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.