c# .net datagridview SelectionChanged
本文关键字:SelectionChanged datagridview net | 更新日期: 2023-09-27 17:50:00
我在为一件应该很简单的事情绞尽脑汁。已经一天了,所以我终于放弃了,我会问这个问题。我如何才能真正触发在。net的datagridview上的selectionChanged事件?我基本上想抓住行值时,用户双击/或单个单击任何地方的行。但我不能为我的生活让这个事件起火,即使我读到这里,这应该是我需要使用的even ?
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in AddrGrid.SelectedRows)
{
string value1 = row.Cells[0].Value.ToString();
string value2 = row.Cells[1].Value.ToString();
//...
}
}
我尝试过类似的东西,但我绝望了,我点击数据网格单元格或行,这不会触发我错过了什么?
当我点击一个单元格时,我让这个事件触发。
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
Addresses.aTyp = AddrGrid.Rows[AddrGrid.CurrentCell.RowIndex].Cells["Address Type"].Value.ToString();
Addresses.seq = AddrGrid.Rows[AddrGrid.CurrentCell.RowIndex].Cells["Sequence"].Value.ToString();
}
但我喜欢捕捉双击或点击一行,而不仅仅是一个单元格。
private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
string value1 = row.Cells[0].Value.ToString();
string value2 = row.Cells[1].Value.ToString();
}
}
你可以使用
private void AddrGrid_CellEnter(object sender, DataGridViewCellEventArgs e)
{
Addresses.aTyp = AddrGrid.Rows[AddrGrid.CurrentCell.RowIndex].Cells["Address Type"].Value.ToString();
Addresses.seq = AddrGrid.Rows[AddrGrid.CurrentCell.RowIndex].Cells["Sequence"].Value.ToString();
}
在您的网格对象中,我们将其命名为'foo'。你会做一些像…
foo.SelectionChanged += dataGridView1_SelectionChanged
您需要在某个地方这样做以连接事件。我通常在表单
关于DataGridview的selectionchanged事件的许多答案使用"DG1.SelectedRows(0)"。这是根本错误的。可能有多个行被选中,并且第一个被选中的行可能不是新选中的行。除非每次都要解析所有选定的行,否则应该使用DG1.Rows(DG1.CurrentCell.RowIndex)