簡體   English   中英

BindingList和ListBox行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM