我有一个绑定到BindingList集合的ListBox。这非常有效。
当第一件商品进入收藏品时,我唯一的悲痛就发生了。 ListBox的默认行为是选择该项 - 但是,这不会引发SelectedIndexChanged事件。我假设这是因为SelectedIndex最初设置为null;在变为空的时候,索引实际上没有改变;相当分配。如何停止选择(突出显示)添加到ListBox的第一个初始项的默认行为?
如果我的假设是错误的,请解释一下?
更新
到目前为止,这是我的代码的核心部分。
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处理程序中调用的。当lsbFlightUavs.SelectedIndex = -1
方法返回时,如何从第二个表单中调用AddFlightUav()
?我知道我可以使ListBox静态,但这对我来说似乎是不好的做法..什么是更优雅的解决方案?
答案 0 :(得分:0)
使用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;