簡體   English   中英

如何強制用戶將建議的條目帶入ComboBox?

[英]How to force a user to take a suggested entry into a ComboBox?

我希望用戶從ComboBox中選擇一個值。 必須在用戶的文本輸入中建議條目。

我是否必須使用事件來強制System.Windows.Forms.ComboBox包含來自其自己的DataSource的值?

示例:必須向用戶建議條目...如果我寫“CO”,組合應該建議“CONGO”和“COLOMBIA”,但用戶只能輸入其中一個值。 用戶不應該引入“COfdfgdfg”或任何隨機字符串。

謝謝!

將組合框的樣式設置為ComboBoxStyle.DropDownList

您必須使用combobox.autocompletemode來獲取名稱liek Congo,當用戶輸入“CO”這樣的文本時會議

你可以將自己的數據源改為comboBox1.AutoCompleteSource

 this.comboBox1.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
this.comboBox1.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.FormattingEnabled = true;
this.comboBox1.Location = new System.Drawing.Point(113, 192);
 this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(121, 20);

然后使用覆蓋ToString方法的對象填充combox項源

public class POCLRO
{
  public int ID { get; set; }
  public string Name { get; set; }

  public override string ToString()
  {
    return Name;
  }
}

編輯:您必須對用戶在組合框中輸入的文本進行驗證,如果用戶選擇auto completemode建議的下拉項,則驗證返回true,否則返回false ...

做下面的事......

為組合框創建一個KeyDown事件處理程序並檢查Enter鍵。 請注意,在用戶點擊輸入后,選擇組合框中的文本(如選擇,就像您正在進行剪切或復制操作一樣)並且焦點保留在組合框中。

如果輸入被按下,則調用一個驗證函數,如果輸入的值與存儲在數據庫中的名稱相等,它將執行您認為必要的任何操作...

您可以在Leave事件處理程序中調用此相同的函數,以防止用戶在進行有效選擇之前離開組合框。

 private void ComboBox_KeyDown(object sender, KeyEventArgs e)
 {
    if (e.KeyCode == Keys.Enter)
    {
        ValidateSelection();
    }
 }

 private  bool validation()
 {
   // do validation here 
 }
private void ComboBox_Leave(object sender, EventArgs e)
{
    if(!ValidateSelection())
    {
        ComboBox.Focus();
    }
 }

暫無
暫無

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

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