私はので、あなたが持っている、いくつかのケースでは、あなたのコントロールに十分なリストアイテムを持っていないことを推測いくつかのスペースをクリックしてSelectedIndexChangedが解雇されました。
あなたはリストアイテムの数に常に合うようにコントロールを動的にサイズ変更することはできないと思います。そうしないと、この質問は表示されません。
ユーザーが同じリストアイテムをクリック(選択)したらどうなりますか?選択されたインデックスが同じであっても、何らかのロジックが発生する必要がありますか(同じロジックが最初に発生したときにクリックされたとき)
あなたは、あなたが以下のハックを使用することができ、一度無視されるべきであるよりも多くの同じインデックスを選択することが必要な場合:
フォームスコープ(ListBoxコントロールを含むフォーム)とその都度選択で変数を保管してくださいインデックスの変更はその変数を設定します。その後、後で使用して、イベントの処理を無視するように同じ選択が行われたかどうかを確認します。ここに例があります:
private int _currSelIdx = -1; // Default value for the selected index when no selection
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex == _currSelIdx)
return;
Console.WriteLine(listBox1.SelectedIndex);
_currSelIdx = listBox1.SelectedIndex;
}
これはかなりうまくいきます。
Winforms?もしそうなら、タグに追加してください。 –
@Merlyn、リストボックスを使用しているので、それはかなり明らかです。 –
必ずしもそうではありません - WPFにはListBoxコントロールもあります。 Merlynのコメントを見る前に、私はあなたの質問に実際に答えを出すつもりでした。 – Eternal21