防止前n行被滚动

3
如何防止 DataGridView 的前三行滚动消失?
该应用程序采用C# Windows Forms与 .NET Framework 4.5。

1
类似这样的语句:“mygrid.rows(2).frozen = true” - http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.frozen(v=vs.110).aspx - Arvo
2
@Arvo,不行……我已经尝试过了。 - TonyP
2个回答

1
属性 DataGridViewRow.Frozen Property 应该与滚动的 DataGridView 一起工作,唯一需要做的是在DataGridView.DataBindingComplete事件中设置它:如下所示:
void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    if (dataGridView1.Rows.Count >= 3)
    {
        dataGridView1.Rows[2].Frozen = true;
    }
}

你可以将Rows[2]设置为冻结状态,从该位置开始的所有行也将被冻结。
来自DataGridViewRow.Frozen Property

此属性允许用户在滚动DataGridView时保留一个或多个重要信息的行。 上面所有的行也会被冻结。

将事件添加到Grid中,如下所示:
dataGridView1.DataBindingComplete += dataGridView1_DataBindingComplete;

然后进行数据绑定,类似于:
DataTable dt = GetDataFromDB();
dataGridView1.DataSource = dt;

谢谢,正如建议的那样,它只在DataBindingComplete事件上设置才有效。 - TonyP
@TonyP,刚刚意识到另一件事情,你不必循环遍历行并将前三行都设置为冻结,而是只需将第三行设置为冻结,上面的行也会被冻结。 - Habib

0

在StackOverflow上可以看到一个类似的问题解答:如何在DataGridView中冻结前两列和顶部行

你需要使用DataGridViewRow.Frozen属性来实现你想要的效果,它可以让你冻结任意行(防止其被滚动)。

你可以像这样使用它:

dataGridView.Rows[0].Frozen = true;

这在MSDN中有很好的文档:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.frozen%28v=vs.110%29.aspx

如果您在执行此操作时遇到任何问题,请将代码添加到您的问题中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接