DataGridView在加载时不选择最后一行

时间:2015-12-04 03:46:03

标签: c# datagridview

< p>我有< code> DataGridView< / code>作为表单的一部分,当填充其所有行时,应默认选择最后一行。< / p> < pre>< code> public MyForm() {     的InitializeComponent();     刷新(); } private void Reload() {     //在这里添加/填充行     if(dgv.Rows.Count> 0)     {         dgv.Rows [dgv.Rows.Count - 1] .Selected = true;     } } < /代码>< /预> < p>我有< code> SelectionMode< / code>设置为< code> FullRowSelect< / code>和< code> MultiSelect< / code>是< code> false< / code>。< / p> < p>任何人都知道为什么这不起作用?弹出表单时,第一行始终处于选中状态。< / p>

1 个答案:

答案 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;
    }
}

使用此方法可确保控件在开始操作之前已完成加载。