0

少し前に、テキスト ファイルをロードしたコンボボックスを編集する方法と、最近編集した行を保存する方法について、誰かが私の質問に答えました。

C#: コンボボックスのリアルタイム更新

問題は、更新前に 1 文字しか変更できず、selectedindex が -1 に変更されるため、ドロップダウン リストで編集していた行を再度選択する必要があることです。

インデックスを変更する理由と、それを停止する方法を誰かが知っていることを願っています。

4

2 に答える 2

4

問題についての私の理解によると、できることは 1 つあります。omboBox1_TextChanged メソッドでは、前のコードを配置する代わりに、bool 変数 (たとえば、textChangedFlag を true に設定) を設定するだけで、この変数のデフォルト値を false に設定できます。次に、KeyDown イベントを使用してコンボボックス項目を編集します。サンプルコードを差し上げます。

サンプルコード:

if (e.KeyCode == Keys.Enter)
        {
            if (textChangedFlag )
            {
                if(comboBox1.SelectedIndex>=0)
                {
                    int index = comboBox1.SelectedIndex;
                    comboBox1.Items[index] = comboBox1.Text;
                    textChangedFlag = false;
                }

            }
        }

このコードを KeyDown イベント ハンドラー メソッドに配置できます。それが役に立てば幸い

于 2010-09-20T14:15:43.210 に答える
3
private int currentIndex;

public Form1()
{
    InitializeComponent();

    comboBox1.SelectedIndexChanged += RememberSelectedIndex;
    comboBox1.KeyDown += UpdateList;
}

private void RememberSelectedIndex(object sender, EventArgs e)
{
    currentIndex = comboBox1.SelectedIndex;
}

private void UpdateList(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && currentIndex >= 0)
    {
        comboBox1.Items[currentIndex] = comboBox1.Text;
    }
}
于 2010-09-20T14:19:29.077 に答える