2012-11-26 25 views
0

Iam使用AutoCompleteMode我的文本框。它會將銀行名稱附加到我的文本框中。所以當我第一次打字的時候,所有的銀行名字都會以第一個字母的形式出現在我的文本框中。現在我的問題是 如果用戶試圖將不在我的下拉列表中的數據包含進來,用戶就不應該發送文本。所以我希望用戶只能使用現有的銀行名稱。Iam將AutoCompleteCustomSource用於下拉文本框。如何停止輸入文本,當用戶離開autoCompleteMode文本c#

+5

plz先輸入您的代碼。 – Milind

+0

如果用戶不被允許輸入新名稱,那麼可能是一個更合適的解決方案[combobox](http://stackoverflow.com/questions/11780558/c-sharp-winforms-combobox-dynamic-autocomplete)。 – CodeCaster

+0

對我來說最簡單的方法似乎是,您可以驗證用戶提交表單時的值。如果它不是有效值,則向用戶顯示錯誤(即「請輸入有效的銀行名稱」)。 –

回答

0

嘗試這樣的:在「驗證」瓶坯的插入txtbox每個字符

bool foundSome = false; 
foreach (var bankName in col) 
{ 
foundSome = bankName.StartsWith(textBox.text); 
} 

if (foundSome) 
    //Do some action 

你可以這樣寫代碼。

0

實現您的需求的最佳方式是使用1個文本框和1個組合框。他們都應該指向相同的集合。

正如您所描述的那樣,文本框將在自動完成模式下運行。一旦您鍵入,組合框值將被設置爲您集合中的第一個匹配值。如果沒有值匹配 - 組合框值應該設置爲空或默認數據。
Combobox將只存儲相應的數據子集,不可能編輯選定的文本。

驗證和數據檢索將從Combobox值完成。

該方法的優點:
- 使用大量數據,用戶可以更容易地找到他/她需要的東西。
- 檢查輸入值是屬於數據集還是強制歸屬的較小代碼。
- 不需要驗證。

可能的缺點:
- 一個更多的控制形式。
- 應該實現同步文本框文本和組合框集合的邏輯。