给出以下代码
namespace WindowsFormsApplication1
{
public class Form1 : Form
{
public Form1()
{
comboBox1 = new System.Windows.Forms.ComboBox();
comboBox1.Items.AddRange(new object[] {
"Item 1",
"Item 2",
"Item 3"});
comboBox1.Location = new System.Drawing.Point(93, 103);
comboBox1.Name = "comboBox1";
comboBox1.Size = new System.Drawing.Size(121, 21);
comboBox1.Text = "Item 1"; // **line 1**
ClientSize = new System.Drawing.Size(284, 262);
Controls.Add(this.comboBox1);
Name = "Form1";
Text = "Form1";
comboBox1.Text = "Nanu"; // **line 2**
}
private ComboBox comboBox1;
}
}
我希望我的ComboBox显示“Nanu”(DropDownStyle.DropDown),但它显示“Item 1”。
省略行comboBox1.Text = "Item 1";
可以解决这个问题。
将comboBox1.Text = "Nanu";
放在OnShown事件处理程序中也可以修复“bug”。
为什么会这样?
答案 0 :(得分:2)
根据msdn
将Text属性设置为null或空字符串(“”)设置 SelectedIndex为-1。将Text属性设置为中的值 Items集合将SelectedIndex设置为该项目的索引。 将Text属性设置为不在集合中的值 保留SelectedIndex不变。
所以,当你这样做时:
comboBox1.Text = "Item 1";
您正在自动选择之前在项目列表中添加的“项目1”。将“Nanu”添加到集合中它应该可以工作:
comboBox1.Items.AddRange(new object[] {
"Item 1",
"Item 2",
"Item 3",
"Nanu"});