簡體   English   中英

僅當我從組合框中選擇項目時才執行操作

[英]Executing an action only when I select an item form the combo box

我有一個ComboBox ,在表單的load事件中,它填充了數據。 現在當我從ComboBox選擇一個Item表格時,它應該執行一些動作。 所以我知道在這種情況下可以使用的事件很少

SelectedIndexChanged

SelectedValueChanged

等等

但問題是,即使在設置ComboBox的DataSource並在加載表單時選擇默認索引等時,也會引發這些事件。

    ComboBox1.DataSource = dt;

    ComboBox1.SelectedIndex = -1;

什么是我想要做的是,我只是想,當 選擇一個項目形成組合框只執行一個動作。 在這種情況下是否可以使用鼠標事件?

comboBox.SelectionChangeCommitted事件似乎就是這么做的。

否則,您可以在綁定數據源之前設置一個布爾值,您可以在事件中使用該數據源來忽略它。

private bool blnIgnoreEvent = false;

// in Form_load
blnIgnoreEvent = true;
ComboBox1.DataSource = dt;
blnIgnoreEvent = false;

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (!blnIgnoreEvent)
    {
        // go ahead
    }
}

我不相信還有另一個事件可以更好地處理您想要做的事情。 綁定數據源時,XIVSolutions對事件觸發有一個簡潔的解決方法: 如何在綁定DataSource時阻止selectedindexchanged事件?

此外,由於SelectedIndexChanged適用於所有情況,為什么不處理第一個?

if (ComboBox1.SelectedIndex == -1)
  {
    return;
  }

如果-1對應於您希望能夠選擇的值,則只需使用私有字段來存儲您檢查的某個bool ,以確定它是否是第一次執行該操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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