所有,

我的WinForms应用程序上有一个DataGridView控件,其选择属性为“整个行”,没有多选。我还将SelectionChanged委托附加到它,我需要在其中获取当前选定的行。

    private void order_SelectionChanged(object sender, EventArgs e)
    {
        ordersItemIndex = order.SelectedRows[0].Index;
    }


问题是,在程序启动时,根本没有选择,只有以后的用户才能使用鼠标或键盘更改选择。所以在我的Form_Load()事件中,我有这个:

   order.ClearSelection();


但是,此代码路径在程序启动时引发异常。

有没有一种好方法可以告诉程序“我们正在加载表单,请不要调用委托”,而无需任何其他变量?

谢谢。

最佳答案

您可以在Form_Load()(而不是InitializeComponents())中清除选择后添加order_SelectionChanged

但是最好检查您的处理程序中是否有任何选定的行。

private void order_SelectionChanged(object sender, EventArgs e)
{
    if (order.SelectedRows.Count > 0)
      ordersItemIndex = order.SelectedRows[0].Index;
}

10-06 03:32