少し前に、テキスト ファイルをロードしたコンボボックスを編集する方法と、最近編集した行を保存する方法について、誰かが私の質問に答えました。
問題は、更新前に 1 文字しか変更できず、selectedindex が -1 に変更されるため、ドロップダウン リストで編集していた行を再度選択する必要があることです。
インデックスを変更する理由と、それを停止する方法を誰かが知っていることを願っています。
少し前に、テキスト ファイルをロードしたコンボボックスを編集する方法と、最近編集した行を保存する方法について、誰かが私の質問に答えました。
問題は、更新前に 1 文字しか変更できず、selectedindex が -1 に変更されるため、ドロップダウン リストで編集していた行を再度選択する必要があることです。
インデックスを変更する理由と、それを停止する方法を誰かが知っていることを願っています。
問題についての私の理解によると、できることは 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 イベント ハンドラー メソッドに配置できます。それが役に立てば幸い
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;
}
}