同じ BindingList にデータバインドされた 2 つの ListBox があります。
問題は、選択した項目を GUI から変更すると、BindingList 内の位置が変更され、BindingList が他の ListBox に選択した項目を変更するように通知することです。
そのため、2 つの ListBoxes Selected Item も同期されていますが、これは私にとっては良くありません。
アイテムのリストを同期して維持したいと思います。カーソル位置なし。
維持されないようにそのカーソルを無効にするにはどうすればよいですか?
サンプル コード (デザイン時にフォームに 2 つの ListBox を追加し、SelectedIndexChanged イベントを登録し、ボタン クリック イベントをボタンに登録するだけです):
public partial class Form1 : Form
{
BindingList<string> list = new BindingList<string>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
list.Add("bla1");
list.Add("bla2");
list.Add("bla3");
this.listBox1.DataSource = list;
this.listBox2.DataSource = list;
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
System.Diagnostics.Trace.WriteLine("ListBox1: " + listBox1.SelectedItem.ToString());
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox2.SelectedIndex != -1)
System.Diagnostics.Trace.WriteLine("ListBox2: " + listBox2.SelectedItem.ToString());
}
// Register this event to a button
private void button1_Click(object sender, EventArgs e)
{
list.Add("Test");
}
}
ありがとう、――ラン。