2017-10-05 129 views
0

假設我有一個C#.NET窗體窗體應用程序,它帶有一個ComboBox,用於選擇字符串值並接受新值的輸入。爲更改而觸發的組合框事件 - 和 - 添加值

什麼是

  • 時選擇其中任一組合框的預先存在的值觸發事件處理方法的新輸入值類型的最有效的方式,或
  • /進入組合框?

我試過像SelectedIndexChanged事件的選項,但我似乎無法得到的東西,當有新的輸入值觸發。我會認爲這是一個相當簡單的事情,但我不確定。

我可以陷入回車鍵,但這似乎是一個半破的假設,這是什麼意味着更新。

回答

0

我會使用ComboBox_SelectedIndexChanged更改所選項目。

我還會捕獲ComboBox_Leave事件以檢查項目是否爲新項目(不在列表中)。這將滿足從ComboBox切換焦點的Enter,Tab鍵和鼠標點擊。

也檢查「可過濾的DataGridViews」,在網上有幾個msdn和codeproject文章,這將有所幫助。

0

不知道你的全部要求是什麼,我質疑是否一個組合框是適當的控制。我的第一個觀察結果是,允許用戶在飛行中輸入新的組合框項目可能會打開潘多拉盒子。我可以很容易地看到重複的項目從一個簡單的拼寫錯誤中發生的其他用戶滑稽動作。這將是一個令人頭疼的問題。

正如@Jeremy Thompson建議,連接組合框「離開」事件可能會有所幫助,您可以使用ComboBox.Text屬性來獲取用戶輸入的新文本,然後檢查它是否已經存在並且不爲空或爲空,然後將其添加到組合框項目列表中。這應該可行,但我猜測可能有更好的方法來實現你的目標。用戶將在組合框中輸入什麼內容?

private void comboBox1_Leave(object sender, EventArgs e) { 
    string currentSelection = comboBox1.Text; 
    if (currentSelection != null && currentSelection != "" && !comboBox1.Items.Contains(currentSelection)) { 
    comboBox1.Items.Add(currentSelection); 
    } 
} 
+0

這裏的上下文是組合框選擇和存儲過濾器字符串,它過濾附近的UI組件的內容。需要輸入新的過濾器,並選擇以前使用的過濾器值。 – ThoralfSkolem

相關問題