【发布时间】:2011-01-14 11:56:38
【问题描述】:
我有一个在单击树视图节点时触发的事件,然后创建一个数据网格视图并将其添加到面板中:
void tvd_NodeClickEvent(double animal, string experiment, string pluginIdentifier)
{
DataGridDisplay dgv = new DataGridDisplay(panel4);
dgv.addDatagrid(animal, experiment, pluginIdentifier);
}
我尝试通过执行以下操作来删除旧数据网格:
panel4.Controls.Remove(datagrid);
panel4.Invalidate();
然后添加新的数据网格:
panel4.Controls.Add(datagrid);
问题是,数据网格在没有删除旧网格的情况下将自己绘制在彼此之上?有什么想法吗?
谢谢。
编辑:添加了额外代码
void ConfigureDatagrid()
{
datagrid.Resize += new EventHandler(datagrid_Resize);
panel4.Controls.Remove(datagrid);
panel4.Invalidate();
datagrid.Location = new System.Drawing.Point(0, 40);
panel4.Controls.Add(datagrid);
columnsWidth = datagrid.Columns.GetColumnsWidth(DataGridViewElementStates.Visible);
checkDatagridControls();
datagrid.ScrollBars = ScrollBars.Both;
datagrid.Anchor = (AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right);
datagrid.Dock = (DockStyle.Top);
AdjustDatagridHeight();
AdjustDatagridWidth();
datagrid.RowHeadersVisible = false;
datagrid.AutoResizeColumnHeadersHeight();
}
一旦获得新的数据网格,就会调用上面的代码:
datagrid = file.returnDatagrid(mouse, experiment);
ConfigureDatagrid();
面板从 Winform 传递到 datagrid 类。
【问题讨论】:
-
请在您要删除现有数据网格的地方显示代码。
标签: c# winforms datagridview