-4

コンボボックス内のデータをクリアするために可能なすべての方法を試しましたが、驚くべきことに何も機能していません。

選択した変更のインデックスにcombobox1値をロードしたい。値はロードされますが、次のインデックスに移動すると、次のコードが記述されます。combobox2combobox1

if (SView._StudentSchool_.Equals("Pre-School")) 
{               
    TB.TimeBlock("Pre-School");
    comboBox3.Enabled = true;
    comboBox3.Items.Clear();

    for (int i = 1; i < TB.i+1; i++) 
    {
        comboBox3.Items.Add(TB.TimeBlock_[j]);
        j++;
    } 
}
else if (SView._StudentSchool_.Equals("Kindergarten")) 
{                 
    TB.TimeBlock("Kindergarten");
    comboBox3.Enabled = true;
    comboBox3.Items.Clear();

    for (int i = 1; i < TB.i + 1; i++)
    {
        comboBox3.Items.Add(TB.TimeBlock_[j]);
        j++;
    }
}
else if (SView._StudentSchool_.Equals("Primary School")) 
{
    TB.TimeBlock("Primary School");
    comboBox3.Enabled = true;
    comboBox3.Items.Clear();

    for (int i = 1; i < TB.i + 1; i++)
    {
        comboBox3.Items.Add(TB.TimeBlock_[j]);
        j++;
    } 
}

このClear()関数は機能していません。次のようなループを使用してアイテムを削除し.datasourse = nullたり、削除したりする他のメソッドも機能しません。.Text = ""

for (int i = 0; i < comboBox3.Items.Count; i++)
{
    comboBox3.Items.RemoveAt(i);
    i--;
}
4

3 に答える 3

2

コンボボックスのDropDownStyleプロパティがDropDownに設定されていると思います。その場合は電話する必要があります

comboBox3.Items.Clear();
comboBox3.ResetText();
comboBox3.SelectedIndex = -1;

プロパティをDropDownStyleに設定している場合は、Items.Clearを呼び出すだけで十分です。

コードのどこかにデータソースを設定した場合、Microsoftサポートはアイテムをクリアするための別のアプローチを説明しています。最初にイベントDataSourceChangedをサブスクライブしてから、

comboBox3.DataSource = null;

イベントのコードは次のようになります

private void comboBox3_DataSourceChanged(object sender, System.EventArgs e)
{
    ComboBox ctb = (ComboBox) sender;
    if (ctb.DataSource == null)
        ctb.Items.Clear();
}
于 2013-01-26T14:55:42.427 に答える
1

combobox1にcombobox2に値をロードさせたい

これがタイプミスかどうかはわかりませんが、間違ったコンボボックスを見ている可能性があります。

于 2013-01-26T15:16:04.173 に答える
1

これはコメントには大きすぎるため、CWの回答です...

あなたが示したことに基づいて、これを行う場合、3 つの if ステートメントは必要ありません。

        TB.TimeBlock(SView._StudentSchool_);
        comboBox3.Enabled = true;
        comboBox3.Items.Clear();
        for (int i = 1; i < TB.i + 1; i++)
        {
            comboBox3.Items.Add(TB.TimeBlock_[j]);
            j++;
        } 
于 2013-01-26T14:59:42.130 に答える