none
关于WinFrom中的TreeView的一个奇怪的异常,求教··· RRS feed

  • 问题

  • 在WinForm的TreeView中

            /// <summary>
            /// TreeView中的节点双击事件,显示图片,11.4修改整理
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void tv_ImageList_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
            {
                try
                {
                    //MessageBox.Show(e.Node.Parent.Text);
                    //本if语句判断用户点击的是否是根节点
                    TreeNode tn = this.tv_ImageList.SelectedNode.Parent;
                    if ((e.Button == System.Windows.Forms.MouseButtons.Left)&&(tn!=null))
                    {
                        TreeNode treeNode = e.Node;
                        ArchiveImageWinFormModel model = list_Image.Find(m => (m.image_id == Convert.ToInt32(treeNode.Name.ToString()) && (m.image_file_name == treeNode.Text)));
                        AppSettingsSection appSection = configuration.AppSettings;

                        if (model != null)
                        {
                            string Imagepath = ArchivesPath + archiveWinFormModel.dossier_id.ToString() + "\\" + model.image_type_name + "\\" + model.image_file_name + ".jpg";
                            ImageShow(Imagepath);
                        }
                        else
                        {
                            MessageBox.Show("系统可能出现异常,请联系管理员","显示图像异常显示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString(),"显示图像异常提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);
                }
            }


    这是代码···如果我是第一次绑定完TreeView,以后,点击两次其根节点旁边的展开的那个图标,连点2次,就会出现一个异常
    “未将对象引用设置到对象的实例”,
    如果你按继续的话,然后无论怎么点击,其异常不会再出现,
    出现异常的代码是 TreeNode tn = this.tv_ImageList.SelectedNode.Parent;
    报了此异常后,执行继续,然后无论怎样,此异常不出现

    暂时我找不到原因,能找的请告诉下,谢谢。

    2009年11月4日 8:16

答案

  • 你好!当节点为根节点的时候 SelectedNode.Parent 为 Null 你这里需要显示的判断一下。

    if (this.tv_ImageList.SelectedNode == null ||
        this.tv_ImageList.SelectedNode.Parent == null)
        return;
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 天驰 2009年11月4日 14:17
    2009年11月4日 8:19
    版主

全部回复

  • 你好!当节点为根节点的时候 SelectedNode.Parent 为 Null 你这里需要显示的判断一下。

    if (this.tv_ImageList.SelectedNode == null ||
        this.tv_ImageList.SelectedNode.Parent == null)
        return;
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 天驰 2009年11月4日 14:17
    2009年11月4日 8:19
    版主
  • 你好!
         应该就是XXY版主提到的问题了,你尝试一下看看!
    周雪峰
    2009年11月4日 10:43
    版主
  •  TreeNode tn = this.tv_ImageList.SelectedNode.Parent;

    在这一条就出现了异常,

    不过已经解决了,判断e.Node.Parent;

    谢谢了
    • 已建议为答案 mldark 2009年11月4日 14:17
    2009年11月4日 14:17