是什么导致控件不能在C#中重新绘制
本文关键字:新绘制 绘制 控件 不能 是什么 | 更新日期: 2023-09-27 18:28:10
我使用TreeView来显示winform和.Net 4.5的数据。有时添加节点时不会重新绘制。为了强制重新绘制,我使用了this.invalidates()
和this.update()
,但它不起作用。我添加了一个PaintEventHandler,以查看是否调用了Paint()
:
DefaultConstructor(){
[...]
this.Paint += new PaintEventHandler(this.OnThisPaint);
}
private void OnThisPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Console.WriteLine("repaint");
}
private void updateTree()
{
//Some fabulous code
Console.WriteLine("Updating the tree");
try
{
this.Invalidate();
this.Update();
}
catch (Exception)
{
Console.WriteLine("Error in invalidate");
throw;
}
}
有时油漆没有被调用,这会导致错误的显示。即使控件没有重新绘制,也不会引发错误。
编辑:
这是我得到的输出:
'Sakura.UI.vshost.exe' (Managed (v4.0.30319)): Loaded 'Microsoft.GeneratedCode'
Bubble Graph // <- Start of the treeview
Cycle Graph
Line Graph
Flw_OilConc_Graph
Spec_OilConc_Graph
WorkingExample
Stacked Graph
ELR_Smoke_Test
Full Load p.1
Spec_Oil_Graph
Table
Table APM
Table Dura // <- Start of the treeview
invalidated
repaint
'Sakura.UI.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:'TFS'2014'Source_LYS'Source-1'Sakura II'Projects'Sakura.UI'bin'Debug'Sakura.UI.Reporting.dll', Symbols loaded.
'Sakura.UI.vshost.exe' (Managed (v4.0.30319)): Loaded 'Microsoft.GeneratedCode'
'Sakura.UI.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:'TFS'2014'Source_LYS'Source-1'Sakura II'Projects'Sakura.UI'bin'Debug'Sakura.DataCoordinating.dll', Symbols loaded.
'Sakura.UI.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:'TFS'2014'Source_LYS'Source-1'Sakura II'Projects'Sakura.UI'bin'Debug'Sakura.Reporting.dll', Symbols loaded.
invalidated
'Sakura.UI.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:'Program Files'Volvo Powertrain'Sakura'Evaluations'Sakura.Eval.dll', Symbols loaded.
'Sakura.UI.vshost.exe' (Managed (v4.0.30319)): Loaded 'Microsoft.GeneratedCode'
repaint
repaint
Bubble Graph // <- Start of the treeview
Cycle Graph
Line Graph
Flw_OilConc_Graph
Spec_OilConc_Graph
UnworkingExample // <- Undisplayed node
WorkingExample
Stacked Graph
ELR_Smoke_Test
Full Load p.1
Spec_Oil_Graph
Table
Table APM
Table Dura // <- End of the treeview
invalidated
The thread 'vshost.RunParkingWindow' (0x1620) has exited with code 0 (0x0).
The thread '<No Name>' (0xed4) has exited with code 0 (0x0).
是什么导致了这种行为
由于执行不力,显示的控件不是修改过的控件。这就是为什么不叫油漆的原因。