OwnerDrawn TreeView中TreeNode.get_Handle()中出现NullReference异常

本文关键字:NullReference 异常 Handle TreeView TreeNode get OwnerDrawn | 更新日期: 2023-09-27 18:26:31

我已经通过设置在C#.NET中自定义了TreeVIew的外观

DrawMode=OwnerDrawAll; 

也就是说,

OnDrawNode()  

覆盖并成功绘制每个节点和连接线。一切都很好,除了,我经常得到一个NullReference excpetion。下面是堆栈跟踪

at System.Windows.Forms.TreeNode.get_Handle()
at System.Windows.Forms.TreeNode.get_RowBounds()
at System.Windows.Forms.TreeView.CustomDraw(Message& m)
at System.Windows.Forms.TreeView.WmNotify(Message& m)
at System.Windows.Forms.TreeView.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
The message send to the WndProc during the exception is "WndProc(ref System.Windows.Forms.Message message = {msg=0x204e (WM_REFLECT + WM_NOTIFY)).

以下步骤经常出现此异常:

  1. 在树视图中添加两个带有大文本的节点
  2. 将"RightToLeft"answers"RightToLeftLayout"属性设置为true
  3. 使用"nodes.Clear()"API删除所有节点
  4. 再次在树状视图中添加2-3个带有大文本的节点

有人想解决这个问题吗?

OwnerDrawn TreeView中TreeNode.get_Handle()中出现NullReference异常

发现

TreeNode.get_Handle()

在关于自定义绘制的通知期间引发null引用异常。我没有弄清楚例外的原因。但我已经通过处理"NM_CUSTOMDRAW"中的空引用异常解决了它通知消息。