0

次のコードを考えると

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";これが修正されます。OnShowncomboBox1.Text = "Nanu";イベント ハンドラーを配置すると、「バグ」も修正されます。

どうしてこれなの?

4

1 に答える 1

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"});
于 2013-03-07T14:24:49.223 に答える