c# – 冻结datagridview中的顶行和前两列

我有一个datagridview,我正在尝试实现以下目标:
1.垂直滚动时应该冻结顶行.
2.前两列应该在水平滚动时冻结.

我应用了column.Freeze = true并且工作正常,但是当应用row [0] .freeze = true时,它不适用于行冻结.

解决方法:

当我创建DataGridView时,我将它与DataTable关联,然后立即将前两行设置为冻结.行不会冻结.但是,如果我按下一个按钮并在该按钮单击中将行设置为冻结,则行会成功冻结.那么,如何在关联表后立即冻结行?

这是一些代码:

 DataTable dataTable = new DataTable();

    // Just add a bunch of columns
    for (int i = 0; i < 15; i++)
    {
    dataTable.Columns.Add("Col" + i.ToString(), typeof
    (string));
    }

    // Add a bunch of rows to the DataTable, with some dummy
    values
    for (int i = 0; i < 100; i++)
    {
    DataRow row = dataTable.NewRow();
    for (int j = 0; j < 15; j++)
    {
    row["Col" + j.ToString()] = "Val" + i.ToString() +
    "-" + j.ToString();
    }
    dataTable.Rows.Add(row);
    }

    gridView.DataSource = dataTable;

    gridView.Rows[1].Frozen = true;

这不行.行未冻结.但是如果我坚持使用gridView.Rows [1] .Frozen = true;按钮事件处理程序中的行,它的工作原理.那么,如何在不需要用户触发事件的情况下执行此操作?我看到两个解决方案:

>以这种方式绑定数据:

for (int i = 0; i < 15; i++)
{
DataGridViewTextBoxColumn c = new DataGridViewTextBoxColumn();
c.Name = "Col" + i.ToString();
gridView.Columns.Add(c);
}
gridView.Rows.Add(100);
for (int i = 0; i < 100; i++)
for (int j = 0; j < 15; j++)
gridView.Rows[i].Cells[j].Value = "Val" + i.ToString() + "-" + j.ToString();
gridView.Rows[0].Frozen = true;

>在此事件中选择冻结的行:

private void gridView_DataBindingComplete(object sender,
DataGridViewBindingCompleteEventArgs e)
{
FrozeFirstRow();
}
上一篇:华大MCU烧录流程


下一篇:音视频综合一体机解决方案