在c#中的DataGridViewRow事件中获取选定的行

本文关键字:获取 中的 DataGridViewRow 事件 | 更新日期: 2023-09-27 18:10:01

我正在使用绑定到数据库的DataGridView。我有一个按钮是禁用的。当选中一行时,不是通过单击单元格,而是通过单击行选择窗格,我希望响应事件并启用该按钮。

在c#中的DataGridViewRow事件中获取选定的行

这里有RowHeaderMouseClick事件。从那里,您可以获得e.RowIndex来确定单击发生在哪一行。

protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        AddRowSelectToGridView(gridView);
        base.Render(writer);
    }
    private void AddRowSelectToGridView(GridView gv)
    {
        try
        {
            foreach (GridViewRow row in gv.Rows)
            {
                row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='underline';";
                row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
                row.Attributes.Add("onclick", Page.ClientScript.GetPostBackEventReference(gv, "Select$" + row.RowIndex.ToString(), true));
            }
        }
        catch (Exception ex)
        {
        }
    }

试试这段代码,你可以选择行…

可以证明,用于检测何时选择DataGridView行的'正确'事件是SelectionChanged

dataGridView1.SelectionChanged += new EventHandler(dataGridView1_SelectionChanged);
void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    // code that happens after selection
}

这个事件的问题是事件签名只有一个普通的EventArgs,没有关于DataGridView的特殊信息。此外,这响应选择更改的任何来源,而不是,只有被选择的行标题。

根据您的确切需要,RowHeaderMouseClick的困惑答案可能更好。