2

全部,

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

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

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

   order.ClearSelection();

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

有没有一种很好的方法来告诉程序“我们正在加载表单,不要调用委托”,而不需要任何额外的变量?

谢谢你。

4

1 回答 1

4

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

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

private void order_SelectionChanged(object sender, EventArgs e)
{
    if (order.SelectedRows.Count > 0)
      ordersItemIndex = order.SelectedRows[0].Index;
}
于 2012-08-27T08:07:35.587 回答