私はいくつかのテキストボックスと一緒にWindowsフォームにDataGridView(Selectionmode:FullRowSelect)を持っているので、私がしたいことは、ユーザーが行を選択するたびに(クリックまたはダブルクリック)、その行の内容がテキストに表示される必要があることです箱、
私はこのコードを試しました
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show("CEll Double_Click event calls");
int rowIndex = e.RowIndex;
DataGridViewRow row = dataGridView1.Rows[rowIndex];
textBox5.Text = row.Cells[1].Value;
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
int rowIndex = e.RowIndex;
DataGridViewRow row = dataGridView1.Rows[rowIndex];
textBox5.Text = dataGridView1.Rows[1].Cells[1].Value.ToString();// row.Cells[1].Value;
}
他にも多くのテキストボックスがありますが、主な問題は、どのイベントもトリガーされていないように見えること、どのイベントを使用する必要があるか、または間違って設定した可能性のあるデータグリッドのプロパティがありますか?助けていただければ幸いです... :(
FullRowSelect選択モードを使用しているため、SelectionChangedイベントを使用できます。ハンドラー内からSelectedRowsプロパティにアクセスし、そこからデータを取得できます。例:
private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView.SelectedRows)
{
string value1 = row.Cells[0].Value.ToString();
string value2 = row.Cells[1].Value.ToString();
//...
}
}
インデックスを入力する代わりに、列コレクションをウォークスルーすることもできます...
このクリックイベントを試すことができます
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
Eid_txt.Text = row.Cells["Employee ID"].Value.ToString();
Name_txt.Text = row.Cells["First Name"].Value.ToString();
Surname_txt.Text = row.Cells["Last Name"].Value.ToString();
最初にラベルを取ります。可視性をfalseに設定し、DataGridView_CellClickイベントでこれを記述します
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
label.Text=dataGridView1.Rows[e.RowIndex].Cells["Your Coloumn name"].Value.ToString();
// then perform your select statement according to that label.
}
//try it it might work for you
デザイナーファイルを確認する必要があります。 Form1.Designer.csを開き、
この行を見つける:windows Form Designer Generated Code。
これを展開すると、多くのコードが表示されます。したがって、この行がdatagridview1コントロール内にあるかどうかを確認します(配置しない場合)。
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
役に立てば幸いです。
簡単な解決策は次のようになります。これは、ソリューションの改善です。
private void dgMapTable_SelectionChanged(object sender, EventArgs e)
{
int active_map=0;
if(dgMapTable.SelectedRows.Count>0)
active_map = dgMapTable.SelectedRows[0].Index;
// User code if required Process_ROW(active_map);
}
上記のコードが機能するためには、他の読者のために注意してくださいFullRowSelect
datagridviewの選択モードを使用する必要があります。 3行以上が選択された場合、これを拡張してメッセージを表示できます。