答案 0 :(得分:1)
此问题源自加载Form
时的Order of Events in Windows Forms。如果您在Reload()
的构造函数中调用Form
,则表单控件尚未实际加载。它们的实例存在,但不存在渲染的对象。
相反,您应该覆盖其中一个其他表单加载事件,例如OnLoad
并从那里调用Reload()
。从构造函数中删除对Reload()
的调用。
public MyForm()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Reload();
}
private void Reload()
{
// add/populate the rows here
if(dgv.Rows.Count > 0)
{
dgv.Rows[dgv.Rows.Count - 1].Selected = true;
}
}
使用此方法可确保控件在开始操作之前已完成加载。