0

リストボックスの「選択」に関する問題に飛びつきました。すでにこのトピックについていくつか検索しましたが、探している答えが見つかりませんでした。私はオブジェクト指向プログラミングをしていて、できるだけ少ないコードを使用したいので、「大きくない」コードにする必要があります。

2 つのリストボックスがあります。いずれかのリストボックスで項目を選択すると、以前に選択した項目を選択解除する必要があります。そのため、リストボックス 1 で何かを選択し、その後リストボックス 2 で何かを選択すると、1 つの選択しかできません」リストボックス1の選択を解除するので、選択を互いに「同期」させたいと思います。

私が明確であることを願っています。さらに情報が必要な場合は私に尋ねてください:)

フォアハンド Ricje20 のおかげで

- 編集 -

私はまだ終わっていませんxDは、(たとえば)次のコードselectedListbox.SelectedIndexまたはそのようなもので言うことができるようにできますか?listBox1 を「選択されたリストボックス」を「選択されたリストボックス」に置き換える必要があります。つまり、アイテムが選択されているリストボックスを意味します。

string file2 = files2[listBox1.SelectedIndex];

4

2 に答える 2

2

両方のリストボックスに「SelectedItem_Changed」のイベントを実装します。次に、1 つのリストボックスの項目が既に選択されているかどうかを識別するために、グローバル bool 変数を使用します。listbox1 の項目が既に選択されている場合は、listBox1 から選択を解除してから、listBox2 から項目を選択します。

編集

private bool itemSelected = false;

private void listBox1_SelectedItemChanged(object sender, EventArg e)
{
    if(itemSelected == false)
    {
        // select the item of listBox1
        itemSelected = true;
    }
    else
    {
        // Clear items of listBox2
        itemSelected = false;
    }
}

private void listBox2_SelectedItemChanged(object sender, EventArg e)
{
    if(itemSelected == false)
    {
         // select the item of listBox2
         itemSelected = true;
    }
    else
    {
          // Clear items of listBox1
          itemSelected = false;
    }
}

このコードはまったくテストされていません。したがって、if-else条件を少し修正するかもしれません

于 2013-06-18T10:18:56.717 に答える
0
listBox1.DataSource = new string[] { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE" };
listBox2.DataSource = new string[] { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE" };

// inline event handlers
listBox1.Click += (s,e)=>{
 listBox2.SelectedIndex = -1; 
};

listBox2.Click += (s,e) =>
{
 listBox1.SelectedIndex = -1; 
};

よろしく。

于 2013-06-18T10:40:44.537 に答える