所有,
我的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;
}