Windowsアプリケーションに、ラジオボタン、コマンドボタン、テキストボックス、データグリッドビュー、リストボックスなどのいくつかのコントロールを含むフォームがあります。
dataGridViewはデータテーブルにバインドされ、ListBoxは別のデータテーブルにバインドされます。ラジオボタンとリストボックスを使用して、dataGridViewのコンテンツをフィルタリングします。
ラジオボタンのいずれかをクリックすると、それに応じてグリッド内のデータが変化します。他のコントロールをクリックすることもでき、それらも応答します。
リストボックスを問題なくスクロールすることもできます。しかし、リストボックス内のアイテムをクリックすると、データグリッドが更新され、リストボックスから選択された各アイテムで更新が続行されます。ただし、他のすべてのコントロールは、ロックされているかのように非アクティブになっています。
これの原因と修正方法を教えてください。
コードは次のとおりです。
private void lstColor_SelectedIndexChanged(object sender, EventArgs e)
{
viewLocalMatsALLBindingSource.Filter = "GRM_COLOR_DESCR = '" + lstColor.Text + "'";
}
private void rdbLogomat_CheckedChanged(object sender, EventArgs e)
{
if (rdbLogomat.Checked)
{
viewLocalMatsALLBindingSource.Filter = "Description LIKE '%LOGO%' OR Description LIKE '%LO-GO%'";
}
}
ラジオイベントは問題なく機能し、フォームの他のコントロールを使用できます。ただし、ListBoxイベントにより、ウィンドウの赤い「X」閉じるボタンでさえ、他のすべてのコントロールがフリーズします。ただし、リストボックスで項目を選択した後、データグリッドでセルと行を選択できます。しかし、セルに何かを入力しようとすると、ListBoxで選択された項目は、入力した文字に基づいて変化します。(データグリッドは読み取り専用なので、セルを編集しても意味がありません。)したがって、リストボックスはフォーカスを維持しているようですが、フォーカスを失う方法がわかりません。もう1つは、リストボックスから項目を選択するまでデータグリッドの列を並べ替えることができ、その後その関数がなくなることです。