是什么导致控件不能在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).

是什么导致了这种行为

是什么导致控件不能在C#中重新绘制

由于执行不力,显示的控件不是修改过的控件。这就是为什么不叫油漆的原因。