Chi*_*joo 5 c# datagridview winforms
我有一个datagridview,正在尝试实现以下目标:1.在垂直滚动时,应该冻结第一行。2.前两列应冻结,水平滚动。
我应用了column.Freeze = true及其正常工作,但是当应用row [0] .freeze = true时,它不适用于行冻结。
小智 5
当我创建 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;
Run Code Online (Sandbox Code Playgroud)
这行不通。行没有被冻结。但是,如果我将这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;
Run Code Online (Sandbox Code Playgroud)在此事件中选择冻结的行:
private void gridView_DataBindingComplete(object sender,
DataGridViewBindingCompleteEventArgs e)
{
FrozeFirstRow();
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
17840 次 |
| 最近记录: |