澳门新葡萄京娱乐场另种思路:图片转换 变通模拟实现VS2005下TreeView的ChcekBox点击

我们选择、选中了 TreeView
设置了一个节点,现在要用程序取消选择、选中,怎么办呢?

为了实现VS2005下TreeView的ChcekBox 点击
根据张Sir的指导(感谢他的无私和指导)
提供如下解决思路:
用两副图片checkboxUncheck.gif 和 checkboxClicked.gif
轮流作为每个TreeNode的ImageUrl
每次点击TreeNode时的回发 都切换图片的显示样式
同时将TreeNode的Value值保存到隐藏的文本框

001.判断一个Form是否已关闭并释放,需要从引用和对象两方面来判断,判断引用是否为null:mainfm==null
判断引用的对象是否已释放:mainfm.IsDisposed
MainFormmainfm;
……
privatevoidbutton_ok_Click(objectsender,EventArgse)
{
if(mainfm==null||mainfm.IsDisposed)
{
mainfm=newMainForm();
mainfm.Show();
}
else
{
mainfm.Show();
}
}

TreeView1.SelectedNode = null?这是不对的:一方面 SelectedNode
是只读的;另一方面从语义上来说这是将选择的节点设置为 null。

以便可以得到有哪些节点是Checked

002.设置Form_MDI为MDI主窗口,设置Form_Child为子窗体
把Form_MDI的属性IsMdiContainer设置为True

应该用 TreeView1.SelectedNode.Selected = false,注意除了 Selected
属性外,还有 Checked 属性。Checked 属性是指节点前面的
Checkbox(ShowCheckBoxes 属性决定开启与否)是否选中,而
Selected 是指用鼠标直接单击节点文字进行选择。

部分示例代码如下

+++++++++++++
treeMenu 绑定
+++++++++++++

 1澳门新葡萄京娱乐场 1澳门新葡萄京娱乐场 2  treeMenu 绑定#region treeMenu 绑定
 2澳门新葡萄京娱乐场 3    private void treeMenuBind()
 3澳门新葡萄京娱乐场 4澳门新葡萄京娱乐场 5    澳门新葡萄京娱乐场 6{
 4澳门新葡萄京娱乐场 7     //构建TreeView
 5澳门新葡萄京娱乐场 8
 6澳门新葡萄京娱乐场 9            TreeNode Node00 = new TreeNode(“00”, “00”);
 7澳门新葡萄京娱乐场 10     Node00..ImageUrl = “../Images/checkboxUnClick.gif”;
 8澳门新葡萄京娱乐场 11
 9澳门新葡萄京娱乐场 12            TreeNode Node01 = new TreeNode(“01”, “01”);
10澳门新葡萄京娱乐场 13     Node01.ImageUrl = “../Images/checkboxUnClick.gif”;
11澳门新葡萄京娱乐场 14
12澳门新葡萄京娱乐场 15            TreeNode Node0101 = new TreeNode(“0101”, “0101”);
13澳门新葡萄京娱乐场 16     Node0101.ImageUrl = “../Images/checkboxUnClick.gif”;
14澳门新葡萄京娱乐场 17
15澳门新葡萄京娱乐场 18            TreeNode Node0102 = new TreeNode(“0102”, “0102”);
16澳门新葡萄京娱乐场 19     Node0102.ImageUrl = “../Images/checkboxUnClick.gif”;
17澳门新葡萄京娱乐场 20
18澳门新葡萄京娱乐场 21            TreeNode Node02 = new TreeNode(“02”, “02”);
19澳门新葡萄京娱乐场 22     Node02.ImageUrl = “../Images/checkboxUnClick.gif”;
20澳门新葡萄京娱乐场 23
21澳门新葡萄京娱乐场 24            Node01.ChildNodes.Add(Node0101);
22澳门新葡萄京娱乐场 25            Node01.ChildNodes.Add(Node0102);
23澳门新葡萄京娱乐场 26
24澳门新葡萄京娱乐场 27            Node00.ChildNodes.Add(Node01);
25澳门新葡萄京娱乐场 28            Node00.ChildNodes.Add(Node02);
26澳门新葡萄京娱乐场 29
27澳门新葡萄京娱乐场 30            TreeView1.Nodes.Add(Node00);
28澳门新葡萄京娱乐场 31
29澳门新葡萄京娱乐场 32            //TreeView1.ShowCheckBoxes = TreeNodeTypes.All;//显示CheckBox
30澳门新葡萄京娱乐场 33            
31澳门新葡萄京娱乐场 34            TreeView1.ExpandDepth = 2;
32澳门新葡萄京娱乐场 35
33澳门新葡萄京娱乐场 36    }
34澳门新葡萄京娱乐场 37    #endregion
35澳门新葡萄京娱乐场 38
36澳门新葡萄京娱乐场 39

+++++++++++++
TreeView 点击 事件
+++++++++++++++++

 1澳门新葡萄京娱乐场 40澳门新葡萄京娱乐场 41TreeView 点击 事件#region TreeView 点击 事件
 2澳门新葡萄京娱乐场 42    protected void treeMenu_SelectedNodeChanged(object sender, EventArgs e)
 3澳门新葡萄京娱乐场 43澳门新葡萄京娱乐场 44    澳门新葡萄京娱乐场 45{
 4澳门新葡萄京娱乐场 46        try
 5澳门新葡萄京娱乐场 47澳门新葡萄京娱乐场 48        澳门新葡萄京娱乐场 49{
 6澳门新葡萄京娱乐场 50            //当前图片路径及名称
 7澳门新葡萄京娱乐场 51
 8澳门新葡萄京娱乐场 52            string imgName = this.treeMenu.SelectedNode.ImageUrl.ToString().Trim();
 9澳门新葡萄京娱乐场 53
10澳门新葡萄京娱乐场 54            if (imgName.Equals(“../Images/checkboxUnClick.gif”))//未选中->选中
11澳门新葡萄京娱乐场 55澳门新葡萄京娱乐场 56            澳门新葡萄京娱乐场 57{
12澳门新葡萄京娱乐场 58澳门新葡萄京娱乐场 59                当前节点 及 子节点 和 父节点#region 当前节点 及 子节点 和 父节点
13澳门新葡萄京娱乐场 60
14澳门新葡萄京娱乐场 61                //当前节点
15澳门新葡萄京娱乐场 62                this.treeMenu.SelectedNode.ImageUrl = “../Images/checkboxClicked.gif”;
16澳门新葡萄京娱乐场 63                //判断当前是否已经存有值 以防重复加入
17澳门新葡萄京娱乐场 64                if(!this.hidtxt_LevelID.Text.Trim().Contains(this.treeMenu.SelectedNode.Value.Trim() + “, “))
18澳门新葡萄京娱乐场 65                    this.hidtxt_LevelID.Text += ” ” + this.treeMenu.SelectedNode.Value + “, “;
19澳门新葡萄京娱乐场 66                //子节点
20澳门新葡萄京娱乐场 67
21澳门新葡萄京娱乐场 68                setChildNode(this.treeMenu.SelectedNode, “1”);
22澳门新葡萄京娱乐场 69                //父节点
23澳门新葡萄京娱乐场 70
24澳门新葡萄京娱乐场 71                setParentNode(this.treeMenu.SelectedNode);
25澳门新葡萄京娱乐场 72                #endregion
26澳门新葡萄京娱乐场 73            }
27澳门新葡萄京娱乐场 74            else//选中->未选中
28澳门新葡萄京娱乐场 75澳门新葡萄京娱乐场 76            澳门新葡萄京娱乐场 77{
29澳门新葡萄京娱乐场 78澳门新葡萄京娱乐场 79                当前节点 及 子节点#region 当前节点 及 子节点
30澳门新葡萄京娱乐场 80
31澳门新葡萄京娱乐场 81                //当前节点 及 子节点
32澳门新葡萄京娱乐场 82
33澳门新葡萄京娱乐场 83                this.treeMenu.SelectedNode.ImageUrl = “../Images/checkboxUnClick.gif”;
34澳门新葡萄京娱乐场 84                this.hidtxt_LevelID.Text=this.hidtxt_LevelID.Text.Replace(” “+this.treeMenu.SelectedNode.Value + “,”, ” “);
35澳门新葡萄京娱乐场 85
36澳门新葡萄京娱乐场 86                //子节点
37澳门新葡萄京娱乐场 87
38澳门新葡萄京娱乐场 88                setChildNode(this.treeMenu.SelectedNode,”0″);
39澳门新葡萄京娱乐场 89                #endregion
40澳门新葡萄京娱乐场 90            }
41澳门新葡萄京娱乐场 91
42澳门新葡萄京娱乐场 92            treeMenu.SelectedNode.Selected = false;
43澳门新葡萄京娱乐场 93        }
44澳门新葡萄京娱乐场 94        catch (Exception ex)
45澳门新葡萄京娱乐场 95澳门新葡萄京娱乐场 96        澳门新葡萄京娱乐场 97{
46澳门新葡萄京娱乐场 98            ex.ToString();
47澳门新葡萄京娱乐场 99        }
48澳门新葡萄京娱乐场 100    }
49澳门新葡萄京娱乐场 101    #endregion
50澳门新葡萄京娱乐场 102
51澳门新葡萄京娱乐场 103

++++++++++++
设置子节点的图片和当前节点一致
++++++++++++++++++++++++++++++

 1澳门新葡萄京娱乐场 104澳门新葡萄京娱乐场 105  设置子节点的图片和当前节点一致#region 设置子节点的图片和当前节点一致
 2澳门新葡萄京娱乐场 106
 3澳门新葡萄京娱乐场 107    //设置子节点的图片和当前节点一致
 4澳门新葡萄京娱乐场 108
 5澳门新葡萄京娱乐场 109    private void setChildNode(TreeNode currNode ,string imgType)
 6澳门新葡萄京娱乐场 110澳门新葡萄京娱乐场 111    澳门新葡萄京娱乐场 112{
 7澳门新葡萄京娱乐场 113        if (imgType.Equals(“1”))//未选中->选中
 8澳门新葡萄京娱乐场 114澳门新葡萄京娱乐场 115        澳门新葡萄京娱乐场 116{
 9澳门新葡萄京娱乐场 117            foreach (TreeNode node in currNode.ChildNodes)
10澳门新葡萄京娱乐场 118澳门新葡萄京娱乐场 119            澳门新葡萄京娱乐场 120{
11澳门新葡萄京娱乐场 121                if (node.ImageUrl.Equals(“../Images/checkboxUnClick.gif”))
12澳门新葡萄京娱乐场 122澳门新葡萄京娱乐场 123                澳门新葡萄京娱乐场 124{
13澳门新葡萄京娱乐场 125                    node.ImageUrl = “../Images/checkboxClicked.gif”;
14澳门新葡萄京娱乐场 126                    if (!this.hidtxt_LevelID.Text.Trim().Contains(” ” + node.Value.Trim() + “, “))
15澳门新葡萄京娱乐场 127                        this.hidtxt_LevelID.Text += ” ” + node.Value + “, “;
16澳门新葡萄京娱乐场 128                }
17澳门新葡萄京娱乐场 129                //递归
18澳门新葡萄京娱乐场 130                if (node.ChildNodes.Count > 0)
19澳门新葡萄京娱乐场 131澳门新葡萄京娱乐场 132                澳门新葡萄京娱乐场 133{
20澳门新葡萄京娱乐场 134                    setChildNode(node,”1″);
21澳门新葡萄京娱乐场 135                }
22澳门新葡萄京娱乐场 136            }
23澳门新葡萄京娱乐场 137        }
24澳门新葡萄京娱乐场 138        else //选中->未选中
25澳门新葡萄京娱乐场 139澳门新葡萄京娱乐场 140        澳门新葡萄京娱乐场 141{
26澳门新葡萄京娱乐场 142            foreach (TreeNode node in currNode.ChildNodes)
27澳门新葡萄京娱乐场 143澳门新葡萄京娱乐场 144            澳门新葡萄京娱乐场 145{
28澳门新葡萄京娱乐场 146                if (node.ImageUrl.Equals(“../Images/checkboxClicked.gif”))
29澳门新葡萄京娱乐场 147澳门新葡萄京娱乐场 148                澳门新葡萄京娱乐场 149{
30澳门新葡萄京娱乐场 150                    node.ImageUrl = “../Images/checkboxUnClick.gif”;
31澳门新葡萄京娱乐场 151
32澳门新葡萄京娱乐场 152                    this.hidtxt_LevelID.Text = this.hidtxt_LevelID.Text.Replace(” ” + node.Value + “,”, ” “);
33澳门新葡萄京娱乐场 153                }
34澳门新葡萄京娱乐场 154                //递归
35澳门新葡萄京娱乐场 155                if (node.ChildNodes.Count > 0)
36澳门新葡萄京娱乐场 156澳门新葡萄京娱乐场 157                澳门新葡萄京娱乐场 158{
37澳门新葡萄京娱乐场 159                    setChildNode(node,”0″);
38澳门新葡萄京娱乐场 160                }
39澳门新葡萄京娱乐场 161            }        
40澳门新葡萄京娱乐场 162        }
41澳门新葡萄京娱乐场 163    }
42澳门新葡萄京娱乐场 164    #endregion
43澳门新葡萄京娱乐场 165
44澳门新葡萄京娱乐场 166

 ++++++++++++++
设置父节点为选中
++++++++++++++++++

 1澳门新葡萄京娱乐场 167澳门新葡萄京娱乐场 168设置父节点为选中#region 设置父节点为选中
 2澳门新葡萄京娱乐场 169    //设置父节点为选中
 3澳门新葡萄京娱乐场 170    private void setParentNode(TreeNode currNode)
 4澳门新葡萄京娱乐场 171澳门新葡萄京娱乐场 172    澳门新葡萄京娱乐场 173{
 5澳门新葡萄京娱乐场 174        if (currNode.Parent != null)
 6澳门新葡萄京娱乐场 175澳门新葡萄京娱乐场 176        澳门新葡萄京娱乐场 177{
 7澳门新葡萄京娱乐场 178            //只有当前父节点未选中时 才须进行图片置换 以及 保存LevelID
 8澳门新葡萄京娱乐场 179            if (currNode.Parent.ImageUrl.Equals(“../Images/checkboxUnClick.gif”))
 9澳门新葡萄京娱乐场 180澳门新葡萄京娱乐场 181            澳门新葡萄京娱乐场 182{
10澳门新葡萄京娱乐场 183                currNode.Parent.ImageUrl = “../Images/checkboxClicked.gif”;
11澳门新葡萄京娱乐场 184                if (!this.hidtxt_LevelID.Text.Trim().Contains(” ” + currNode.Parent.Value.Trim() + “, “))
12澳门新葡萄京娱乐场 185                    this.hidtxt_LevelID.Text += ” ” + currNode.Parent.Value + “, “;
13澳门新葡萄京娱乐场 186            }
14澳门新葡萄京娱乐场 187            //递归上寻
15澳门新葡萄京娱乐场 188            if (currNode.Parent.Parent != null)
16澳门新葡萄京娱乐场 189澳门新葡萄京娱乐场 190            澳门新葡萄京娱乐场 191{
17澳门新葡萄京娱乐场 192                setParentNode(currNode.Parent);
18澳门新葡萄京娱乐场 193            }
19澳门新葡萄京娱乐场 194        }
20澳门新葡萄京娱乐场 195    }
21澳门新葡萄京娱乐场 196    #endregion
22澳门新葡萄京娱乐场 197

把Form_Child的属性isMdiContainer设置为false,然后在Form_Child的load事件中加载如下代码:

ChildForm2chldfm2=newChildForm2();

chldfm2.MdiParent=this;

chldfm2.Show();

003.工具栏按钮同时显示图像与文字
设置DisplayStyle属性(ImageAndText为显示图像与文字)
设置TextImageRelation属性(ImageAboveText图像在上文字在下)

004.只运行一个程序实例
usingSystem.Diagnostics;
staticclassProgram
{
///<summary>
///应用程序的主入口点。
///</summary>
[STAThread]
staticvoidMain()
{
if(Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName).Length>1)
{
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(newForm1());
}
}

005.根据字符串名称,实例化指定的Form.
在开发中,一般需要在TreeView中打开相应的Form,TreeView的Form名称保存在数据库中,双击TreeView需要根据字符串名称,实例化指定的Form.
格式:Activator.CreateInstance(Type.GetType(“命名空间+类名”))
返回:要访问新创建的实例则必须解包的句柄
描述:使用命名的程序集和默认构造函数,创建名称已指定的类型的实例。
Formfm;
fm=(Form)Activator.CreateInstance(Type.GetType(“WindowsApplication2.Form2”));
fm.Show();

//第一步:得到类的全名(命名空间+类名)
//第二部:根据全名得到类的类型
//第三步:创建类实例

反射动态创建对象:
如果A,B,C,D都与执行代码同一个程序集.则可以这样调用
System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(“命名空间.类名”,false);
如:
objecto=System.Reflection.Assembly.GetExecutingAssembly().CreateInstance(“MyNameSpace.A”,false);

不同程序集的话.则要装载调用.如下:
System.Reflection.Assembly.Load(“程序集名称”).CreateInstance(“命名空间.类名”,false);
如:
objecto=System.Reflection.Assembly.Load(“MyDll”).CreateInstance(“MyNameSpace.A”,false);

动态创建后再将o强制转换为IChar接口,如下:
ICharichar=oasIChar;

如果转换失败则ichar为null值.

stringfullName=this.GetType().FullName;
stringNamespace=this.GetType().Namespace;
stringname=this.GetType().Name;

006.TreeView
当前选中项:TreeView.SelectedNode
增加顶级节点:TreeView.Nodes.Add(“Key”,”Text”)
增加同级节点:TreeView.SelectedNode.Parent.Nodes.Add(“Key”,”Text”)
增加子节点:TreeView.SelectedNode.Nodes.Add(“Key”,”Text”)
全部展开:TreeView.ExpandAll()
全部收拢:TreeView.CollapseAll()

007.c#与数据库的null值转换.
publicstaticobjectToDBValue(thisobjectvalue)
{
returnvalue==null?DBNull.Value:value;
}

publicstaticobjectFromDBValue(thisobjectdbValue)
{
returndbValue==DBNull.Value?null:dbValue;
}

008.当前程序的基目录
stringcurrentDir=AppDomain.CurrentDomain.BaseDirectory//获得当前程序的
stringfilePath=System.IO.Path.Combine(CurrentDir,”filename.txt”);

009.Log4Net

010.全局属性值
Application.Current.Properties[“OperatorId”]//全局属性值

011.抛出异常
thrownewException(“error”);

012.关于集合List<T>
List<int>list=newList<int>();
list.add(11);
list.add(22);
foreach(intiinlist)
{
MessageBox.Show(i.ToString());
}

013.关于可空类型:
可空类型(null):引用类型.自定义类、string、大部分类
不可空类型:值类型.int、boolean、decimal、DateTime等.
可空值类型:不可空类型后加?.如int?i=null;可以把int赋值给int?,不可以把int?赋值给int.
bool?转换为bool需要强制类型转换

复选框是否选中
if((bool)checkBox.IsChecked)
{
MessageBox.Show(“选中”);
}
if(checkBox.IsChecked==true)

 

 

Cited From:

发表评论

电子邮件地址不会被公开。 必填项已用*标注