2014-09-01 53 views
0

我想在組合框中設置文本。下面是代碼 -無法在DropDownList中的Combox框中設置文本

private System.Windows.Forms.ComboBox selectModel; 
this.selectModel = new System.Windows.Forms.ComboBox(); 
this.selectModel.Name = "selectModel"; 
this.selectModel.FormattingEnabled = true; 
this.selectModel.Size = new System.Drawing.Size(64, 21); 
this.selectModel.Location = new System.Drawing.Point(3, 76); 
this.selectModel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 

下面的行不working-

selectModel.SelectedText = getModelNameFromConf(); 

文檔說「它獲取或設置在組合框的編輯部分選擇的文本」 。我無法對用戶進行編輯。

請任何解決方法。

+0

它是Windows窗體應用程序嗎?爲什麼ASP.NET標籤? – MarcusVinicius 2014-09-01 19:47:37

回答

1

這是因爲當您使用ComboBoxStyle.DropDownList時,下拉列表中沒有可編輯部分。要使其可編輯,請使用ComboBoxStyle.DropDown

也請注意remarks on the SelectedText property與控件是否有焦點有關。您可能會發現Text屬性更適合多種用途。

編輯例如:

selectModel.Text = getModelNameFromConf(); 

假設該組合包含在其列表中值,設置Text還將設置下拉的SelectedIndex財產。

(我覺得有些此控件的屬性名稱是特別混亂,包括DropDownDropDownList。有人在MS有一個糟糕的一天,當此對照編碼。還要注意單詞選擇正在使用中兩種不同的方式:在這裏,你想設置選擇的項目,而SelectedText意味着一些文本被選中—這可能不是整個項目文本。這與在用戶將鼠標拖動到的文本框中相同突出顯示一些文本,但不是全部。)

+0

'文字'屬性?你可以把它寫完嗎?我觀察到我可以通過使用'selectModel.SelectedIndex'來更改當前項目。我只是想顯示已存在於'selectModel'中的項目。假設組合框包含d,b,c,a,e,k項。組合框正在顯示d。現在我想顯示c。我能做的一件事是首先找出指數然後設置,這是很小的開銷。而不是它,我正在考慮設置文本。 – 2014-09-02 09:07:58

+0

@RaviJoshi我已經擴展了我的答案,並提供了有關這些觀點的信息。 – 2014-09-02 09:26:09

+0

非常感謝。你方的說明非常有用:) – 2014-09-02 16:52:34