1

我正在为一些应该很简单的事情绞尽脑汁。现在已经一天了,所以我终于放弃了,我会问这个问题。如何在.net 中的datagridview 上实际触发 selectionChanged 事件?当用户双击/或单击行上的任何位置时,我基本上想获取行值。但我一辈子都不能让这个事件发生甚至很难我在这里读到这应该是我需要使用的事件?

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();

        }

但我喜欢捕获双击或单击一行而不仅仅是一个单元格。非常感激任何的帮助。

4

4 回答 4

2
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();
     }
 }
于 2012-12-29T06:41:25.673 回答
2

你可以用这个

    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();
    }
于 2012-12-29T06:46:34.510 回答
1

在您的网格对象上,我们将其称为“foo”。你会做类似的事情..

foo.SelectionChanged += dataGridView1_SelectionChanged

您需要在某处执行此操作以连接事件。我通常在表单的构造函数中执行此操作

于 2012-12-29T06:33:15.003 回答
0

许多与 DataGridview 的 selectionchanged 事件相关的答案都使用“ DG1.SelectedRows(0) ”。这从根本上是错误的。可能选择了多行,并且第一个选择的行可能不是新选择的行。除非您想每次都解析所有选定的行,否则应使用“ DG1.Rows(DG1.CurrentCell.RowIndex) ”

于 2020-01-23T22:19:00.660 回答