Treeview重绘的问题

小菜家的肉宝宝 2018-06-15 07:36:39
我尝试作了一个小功能

就是在 Treeview里面 可能点击某一个Node的时候

会绘制一个小图案

点击另外一个Node的时候

小图案就可以取消

我改写了 OnDrawNode 事件

但是 这个事件只会刷新 当前Node的部分画面

如果我想要让整个画面都刷新的话

应该用啥米方式会比较适合阿

...全文
1098 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
desperaso 2019-02-13
  • 打赏
  • 举报
回复
简单的Treeview和ListView使用 参考
https://pan.baidu.com/s/1WA6QK411sVvKnL3s9DRlvg

treeview设个双缓冲,不然会闪烁

public class TreeViewEx : TreeView
{
protected override void OnHandleCreated(EventArgs e)
{
SendMessage(this.Handle, TVM_SETEXTENDEDSTYLE, (IntPtr)TVS_EX_DOUBLEBUFFER, (IntPtr)TVS_EX_DOUBLEBUFFER);
base.OnHandleCreated(e);
}
private const int TVM_SETEXTENDEDSTYLE = 0x1100 + 44;
private const int TVM_GETEXTENDEDSTYLE = 0x1100 + 45;
private const int TVS_EX_DOUBLEBUFFER = 0x0004;
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}
chyede 2019-02-13
  • 打赏
  • 举报
回复
引用 1 楼 以专业开发人员为伍 的回复:
封装你自己的控件,设计接口事件,在调用程序中写监听和处理事件的代码。总之是越是高级的架构越需要封装控件。 要开发一个上图的应用,就要封装事件。有的人常年玩儿底层的 GDI 画图,看不起封装几十个控件的类库。结果它也就只能停留在小程序“玩一玩”阶段。
看过你几次回复,感觉你是个纯理论家,大话连篇,哈哈。。。。。。
  • 打赏
  • 举报
回复
强制刷新 控件.Invalidate();
  • 打赏
  • 举报
回复
封装你自己的控件,设计接口事件,在调用程序中写监听和处理事件的代码。总之是越是高级的架构越需要封装控件。 要开发一个上图的应用,就要封装事件。有的人常年玩儿底层的 GDI 画图,看不起封装几十个控件的类库。结果它也就只能停留在小程序“玩一玩”阶段。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧