gpt4 book ai didi

vb.net - 我怎样才能 DoubleBuffer 一个 winforms Treeview?

转载 作者:行者123 更新时间:2023-12-01 05:40:00 39 4
gpt4 key购买 nike

我有一个标准的 winforms TreeView 控件,每当我将鼠标悬停在表单上的任何其他控件上时,它都会不断闪烁。我想对 treeview 进行 doubleBuffer 以减少闪烁,但我不知道该怎么做。
有人可以告诉我如何实现我的目标吗?

非常感谢

最佳答案

由于相同的场景,在开发财务软件的某些部分时,我不得不回溯实现双缓冲 TreeView。 .NET 中的 TreeView 实现是一个非常粗略的实现,但这是我解决它的方法:

 Public Class DoubleBufferedTreeView
Inherits System.Windows.Forms.TreeView

Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()

' Add any initialization after the InitializeComponent() call.
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
Me.UpdateStyles()
End Sub
End Class

我以这种方式实现的另一个原因是因为我必须做一些自定义绘图来显示用户拖放 TreeNode 的位置,所以我做了一些自定义绘图来在节点之间显示一个条。

DoubleBuffering 不是一个完全可靠的解决方案,因为 TreeView 轻微闪烁,但这是我当时能够得到的最好的解决方案。我也不想像其他人所说的那样暂停 TreeView,因为我仍然希望 TreeView 执行其布局和正常操作,即使用户可能使用 UI 的不同部分。

附注。 C# 的代码几乎相同。

关于vb.net - 我怎样才能 DoubleBuffer 一个 winforms Treeview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118831/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com