0

我通过设置自定义了 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 个带有大文本的节点添加到树视图。
  2. 将 RightToLeft 和 RightToLeftLayout 属性设置为 true。
  3. 使用“Nodes.Clear()”API 删除所有节点。
  4. 再次在树视图中添加 2-3 个带有大文本的节点。

任何人有任何想法来解决这个问题?

4

1 回答 1

0

发现该

TreeNode.get_Handle()

在关于自定义绘制的通知期间抛出空引用异常。我没有得到异常的原因。但是我已经通过处理“NM_CUSTOMDRAW”通知消息中的空引用异常来解决它。

于 2014-01-14T08:43:47.287 回答