同じフォームのテキストボックスに値を表示するために多くのオプションを試しましたが、datagridview が 2 つの異なるテーブルのレコードを表示できるため、うまくいきませんでした。
代わりに、datagridview の次のイベントを使用しました。
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
this.dataGridView1.SelectionChanged += new System.EventHandler(this.DisplayValueinTextBox);
}
DisplayValueinTextBox では、各テーブルに表示される列の数に基づいて次のコードを記述しました。
private void DisplayValueinTextBox(object sender, EventArgs e)
{
try
{
textBox1.Text = dataGridView1.SelectedCells[0].Value.ToString();
textBox2.Text = dataGridView1.SelectedCells[1].Value.ToString();
textBox3.Text = dataGridView1.SelectedCells[2].Value.ToString();
if (tblGrid == "Employee") //name of table which has more columns in grid
{
textBox4.Text = dataGridView1.SelectedCells[3].Value.ToString();
textBox5.Text = dataGridView1.SelectedCells[4].Value.ToString();
textBox6.Text = dataGridView1.SelectedCells[5].Value.ToString();
}
this.dataGridView1.SelectionChanged -= new System.EventHandler(this.DisplayValueinTextBox); //removed it as I was getting error.
}
catch (Exception exdisp)
{
MessageBox.Show(exdisp.Message);
}
}
また、dataGridView の SelectionMode プロパティを FullRowSelect に変更しました。これにより、ユーザーが任意のセルをクリックしても、textbox1 に SelectedCells[0] の値が表示されます。
もっと良い選択肢があることを願っていますので、これについてのコメントをお待ちしています。