资源简介

一个WinForm的TreeView,某node的CheckBox初始状态为false,当双击这个node的checkbox时,会出现很奇怪的情况: 第一次双击checkbox,checkbox显示的状态会切换两次状态,unchecked-> checked-> unchecked,而AfterCheck事件仅触发一次,在AfterCheck事件中获取到的checkbox状态为checked。在这里checkbox状态已经和显示状态不一致了 以后每次双击,checkbox显示的状态会出现一次切换,AfterCheck也会触发一次,并且checkbox显示的状态和值的状态仍然保持相反。 除上面这个问题外,还有一点,当双击treeview 的checkbox后,如果再去单击或双击该界面中除这个treeview外的任何部分,系统会忽略第一次点击事件。举例来说,一个窗口中,有一个treeview,还有一个ok按钮,当我双击这个treeview的一个checkbox后,再去点那个ok按钮,第一次点击是没有任何作用的,第二次以及以后的点击才会有效,包括点击最大化,最小化,以及关闭这种系统按钮。 为了解决以上问题,我重写了TreeView控件,在不影响其它地方的前提下,能很好的解决以上问题。我的环境:.Net framework4.0 + VS2005 + Win7 编译通过,并付执行程序。-

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace testTreeView
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void treeView1_AfterCheck(object sender TreeViewEventArgs e)
        {
            if (e.Action != TreeViewAction.Unknown && (e.Node.Nodes.Count > 0 || e.Node.Name == “root“))
            {
                foreach (TreeNode childNode in e.Node.Nodes)
                {
                    childNode.Checked = e.Node.Checked;

                }
                this.label1.Text = e.Node.Checked.ToString();
            }
            this.label2.Text = e.Node.Checked.ToString();
            if (e.Node.Name == “ConvToLayout“)
            {
                this.label17.Text = e.Node.Checked.ToString();
            }
            if (e.Node.Name == “ConvToPrinter“)
            {
                this.label18.Text = e.Node.Checked.ToString();
            }
        }
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-08-09 13:23  TreeViewEx\
     目录           0  2012-08-09 13:27  TreeViewEx\testTreeView\
     文件         929  2012-08-08 13:37  TreeViewEx\testTreeView.sln
     文件       27136  2012-08-09 13:27  TreeViewEx\testTreeView.suo
     目录           0  2012-08-09 13:23  TreeViewEx\testTreeView\bin\
     目录           0  2012-08-09 13:23  TreeViewEx\testTreeView\bin\Debug\
     文件       24576  2012-08-08 13:24  TreeViewEx\testTreeView\bin\Debug\testTreeView.exe
     文件       26112  2012-08-08 13:24  TreeViewEx\testTreeView\bin\Debug\testTreeView.pdb
     文件        5632  2012-08-08 12:10  TreeViewEx\testTreeView\bin\Debug\testTreeView.vshost.exe
     目录           0  2012-08-09 13:23  TreeViewEx\testTreeView\bin\Release\
     文件       24576  2012-08-09 13:27  TreeViewEx\testTreeView\bin\Release\testTreeView.exe
     文件       34304  2012-08-09 13:27  TreeViewEx\testTreeView\bin\Release\testTreeView.pdb
     文件        5632  2012-08-09 13:26  TreeViewEx\testTreeView\bin\Release\testTreeView.vshost.exe
     文件        1140  2012-08-09 13:27  TreeViewEx\testTreeView\Form1.cs
     文件       12140  2012-08-09 13:26  TreeViewEx\testTreeView\Form1.Designer.cs
     文件        5814  2012-08-09 13:26  TreeViewEx\testTreeView\Form1.resx
     目录           0  2012-08-09 13:23  TreeViewEx\testTreeView\obj\
     目录           0  2012-08-09 13:23  TreeViewEx\testTreeView\obj\Debug\
     目录           0  2012-08-08 12:10  TreeViewEx\testTreeView\obj\Debug\TempPE\
     文件         842  2012-08-08 13:24  TreeViewEx\testTreeView\obj\Debug\testTreeView.csproj.GenerateResource.Cache
     文件       24576  2012-08-08 13:24  TreeViewEx\testTreeView\obj\Debug\testTreeView.exe
     文件         180  2012-08-08 13:24  TreeViewEx\testTreeView\obj\Debug\testTreeView.Form1.resources
     文件       26112  2012-08-08 13:24  TreeViewEx\testTreeView\obj\Debug\testTreeView.pdb
     文件         180  2012-08-08 12:18  TreeViewEx\testTreeView\obj\Debug\testTreeView.Properties.Resources.resources
     目录           0  2012-08-09 13:27  TreeViewEx\testTreeView\obj\Release\
     目录           0  2012-08-08 13:37  TreeViewEx\testTreeView\obj\Release\TempPE\
     文件         842  2012-08-09 13:26  TreeViewEx\testTreeView\obj\Release\testTreeView.csproj.GenerateResource.Cache
     文件       24576  2012-08-09 13:27  TreeViewEx\testTreeView\obj\Release\testTreeView.exe
     文件         180  2012-08-09 13:26  TreeViewEx\testTreeView\obj\Release\testTreeView.Form1.resources
     文件       34304  2012-08-09 13:27  TreeViewEx\testTreeView\obj\Release\testTreeView.pdb
     文件         180  2012-08-08 13:37  TreeViewEx\testTreeView\obj\Release\testTreeView.Properties.Resources.resources
............此处省略10个文件信息

评论

共有 条评论