資源簡介
一個WinForm的TreeView,某node的CheckBox初始狀態(tài)為false,當雙擊這個node的checkbox時,會出現(xiàn)很奇怪的情況: 第一次雙擊checkbox,checkbox顯示的狀態(tài)會切換兩次狀態(tài),unchecked-> checked-> unchecked,而AfterCheck事件僅觸發(fā)一次,在AfterCheck事件中獲取到的checkbox狀態(tài)為checked。在這里checkbox狀態(tài)已經和顯示狀態(tài)不一致了 以后每次雙擊,checkbox顯示的狀態(tài)會出現(xiàn)一次切換,AfterCheck也會觸發(fā)一次,并且checkbox顯示的狀態(tài)和值的狀態(tài)仍然保持相反。 除上面這個問題外,還有一點,當雙擊treeview 的checkbox后,如果再去單擊或雙擊該界面中除這個treeview外的任何部分,系統(tǒng)會忽略第一次點擊事件。舉例來說,一個窗口中,有一個treeview,還有一個ok按鈕,當我雙擊這個treeview的一個checkbox后,再去點那個ok按鈕,第一次點擊是沒有任何作用的,第二次以及以后的點擊才會有效,包括點擊最大化,最小化,以及關閉這種系統(tǒng)按鈕。 為了解決以上問題,我重寫了TreeView控件,在不影響其它地方的前提下,能很好的解決以上問題。我的環(huán)境:.Net framework4.0 + VS2005 + Win7 編譯通過,并付執(zhí)行程序。-
代碼片段和文件信息
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個文件信息
評論
共有 條評論