另种思路:图片转换 变通模拟实现VS2005下TreeView的ChcekBox点击
為了實(shí)現(xiàn)VS2005下TreeView的ChcekBox 點(diǎn)擊
根據(jù)張Sir的指導(dǎo)(感謝他的無私和指導(dǎo))
提供如下解決思路:
用兩副圖片checkboxUncheck.gif 和 checkboxClicked.gif
輪流作為每個(gè)TreeNode的ImageUrl
每次點(diǎn)擊TreeNode時(shí)的回發(fā) 都切換圖片的顯示樣式
同時(shí)將TreeNode的Value值保存到隱藏的文本框
以便可以得到有哪些節(jié)點(diǎn)是Checked
------------------
部分示例代碼如下
------------------
+++++++++++++
treeMenu 綁定
+++++++++++++
?2????private?void?treeMenuBind()
?3????{
?4?????//構(gòu)建TreeView
?5
?6????????????TreeNode?Node00?=?new?TreeNode("00",?"00");
?7?????Node00..ImageUrl?=?"../Images/checkboxUnClick.gif";
?8
?9????????????TreeNode?Node01?=?new?TreeNode("01",?"01");
10?????Node01.ImageUrl?=?"../Images/checkboxUnClick.gif";
11
12????????????TreeNode?Node0101?=?new?TreeNode("0101",?"0101");
13?????Node0101.ImageUrl?=?"../Images/checkboxUnClick.gif";
14
15????????????TreeNode?Node0102?=?new?TreeNode("0102",?"0102");
16?????Node0102.ImageUrl?=?"../Images/checkboxUnClick.gif";
17
18????????????TreeNode?Node02?=?new?TreeNode("02",?"02");
19?????Node02.ImageUrl?=?"../Images/checkboxUnClick.gif";
20
21????????????Node01.ChildNodes.Add(Node0101);
22????????????Node01.ChildNodes.Add(Node0102);
23
24????????????Node00.ChildNodes.Add(Node01);
25????????????Node00.ChildNodes.Add(Node02);
26
27????????????TreeView1.Nodes.Add(Node00);
28
29????????????//TreeView1.ShowCheckBoxes?=?TreeNodeTypes.All;//顯示CheckBox
30????????????
31????????????TreeView1.ExpandDepth?=?2;
32
33????}
34????#endregion
35
36
+++++++++++++
TreeView 點(diǎn)擊 事件
+++++++++++++++++
?2????protected?void?treeMenu_SelectedNodeChanged(object?sender,?EventArgs?e)
?3????{
?4????????try
?5????????{
?6????????????//當(dāng)前圖片路徑及名稱
?7
?8????????????string?imgName?=?this.treeMenu.SelectedNode.ImageUrl.ToString().Trim();
?9
10????????????if?(imgName.Equals("../Images/checkboxUnClick.gif"))//未選中->選中
11????????????{
12????????????????當(dāng)前節(jié)點(diǎn)?及?子節(jié)點(diǎn)?和?父節(jié)點(diǎn)#region?當(dāng)前節(jié)點(diǎn)?及?子節(jié)點(diǎn)?和?父節(jié)點(diǎn)
13
14????????????????//當(dāng)前節(jié)點(diǎn)
15????????????????this.treeMenu.SelectedNode.ImageUrl?=?"../Images/checkboxClicked.gif";
16????????????????//判斷當(dāng)前是否已經(jīng)存有值?以防重復(fù)加入
17????????????????if(!this.hidtxt_LevelID.Text.Trim().Contains(this.treeMenu.SelectedNode.Value.Trim()?+?",?"))
18????????????????????this.hidtxt_LevelID.Text?+=?"?"?+?this.treeMenu.SelectedNode.Value?+?",?";
19????????????????//子節(jié)點(diǎn)
20
21????????????????setChildNode(this.treeMenu.SelectedNode,?"1");
22????????????????//父節(jié)點(diǎn)
23
24????????????????setParentNode(this.treeMenu.SelectedNode);
25????????????????#endregion
26????????????}
27????????????else//選中->未選中
28????????????{
29????????????????當(dāng)前節(jié)點(diǎn)?及?子節(jié)點(diǎn)#region?當(dāng)前節(jié)點(diǎn)?及?子節(jié)點(diǎn)
30
31????????????????//當(dāng)前節(jié)點(diǎn)?及?子節(jié)點(diǎn)
32
33????????????????this.treeMenu.SelectedNode.ImageUrl?=?"../Images/checkboxUnClick.gif";
34????????????????this.hidtxt_LevelID.Text=this.hidtxt_LevelID.Text.Replace("?"+this.treeMenu.SelectedNode.Value?+?",",?"?");
35
36????????????????//子節(jié)點(diǎn)
37
38????????????????setChildNode(this.treeMenu.SelectedNode,"0");
39????????????????#endregion
40????????????}
41
42????????????treeMenu.SelectedNode.Selected?=?false;
43????????}
44????????catch?(Exception?ex)
45????????{
46????????????ex.ToString();
47????????}
48????}
49????#endregion
50
51
++++++++++++
設(shè)置子節(jié)點(diǎn)的圖片和當(dāng)前節(jié)點(diǎn)一致
++++++++++++++++++++++++++++++
?2
?3????//設(shè)置子節(jié)點(diǎn)的圖片和當(dāng)前節(jié)點(diǎn)一致
?4
?5????private?void?setChildNode(TreeNode?currNode?,string?imgType)
?6????{
?7????????if?(imgType.Equals("1"))//未選中->選中
?8????????{
?9????????????foreach?(TreeNode?node?in?currNode.ChildNodes)
10????????????{
11????????????????if?(node.ImageUrl.Equals("../Images/checkboxUnClick.gif"))
12????????????????{
13????????????????????node.ImageUrl?=?"../Images/checkboxClicked.gif";
14????????????????????if?(!this.hidtxt_LevelID.Text.Trim().Contains("?"?+?node.Value.Trim()?+?",?"))
15????????????????????????this.hidtxt_LevelID.Text?+=?"?"?+?node.Value?+?",?";
16????????????????}
17????????????????//遞歸
18????????????????if?(node.ChildNodes.Count?>?0)
19????????????????{
20????????????????????setChildNode(node,"1");
21????????????????}
22????????????}
23????????}
24????????else?//選中->未選中
25????????{
26????????????foreach?(TreeNode?node?in?currNode.ChildNodes)
27????????????{
28????????????????if?(node.ImageUrl.Equals("../Images/checkboxClicked.gif"))
29????????????????{
30????????????????????node.ImageUrl?=?"../Images/checkboxUnClick.gif";
31
32????????????????????this.hidtxt_LevelID.Text?=?this.hidtxt_LevelID.Text.Replace("?"?+?node.Value?+?",",?"?");
33????????????????}
34????????????????//遞歸
35????????????????if?(node.ChildNodes.Count?>?0)
36????????????????{
37????????????????????setChildNode(node,"0");
38????????????????}
39????????????}????????
40????????}
41????}
42????#endregion
43
44
?++++++++++++++
設(shè)置父節(jié)點(diǎn)為選中
++++++++++++++++++
?2????//設(shè)置父節(jié)點(diǎn)為選中
?3????private?void?setParentNode(TreeNode?currNode)
?4????{
?5????????if?(currNode.Parent?!=?null)
?6????????{
?7????????????//只有當(dāng)前父節(jié)點(diǎn)未選中時(shí)?才須進(jìn)行圖片置換?以及?保存LevelID
?8????????????if?(currNode.Parent.ImageUrl.Equals("../Images/checkboxUnClick.gif"))
?9????????????{
10????????????????currNode.Parent.ImageUrl?=?"../Images/checkboxClicked.gif";
11????????????????if?(!this.hidtxt_LevelID.Text.Trim().Contains("?"?+?currNode.Parent.Value.Trim()?+?",?"))
12????????????????????this.hidtxt_LevelID.Text?+=?"?"?+?currNode.Parent.Value?+?",?";
13????????????}
14????????????//遞歸上尋
15????????????if?(currNode.Parent.Parent?!=?null)
16????????????{
17????????????????setParentNode(currNode.Parent);
18????????????}
19????????}
20????}
21????#endregion
22
轉(zhuǎn)載于:https://www.cnblogs.com/freeliver54/archive/2007/01/08/614668.html
總結(jié)
以上是生活随笔為你收集整理的另种思路:图片转换 变通模拟实现VS2005下TreeView的ChcekBox点击的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSSFriendlyAdapter 的
- 下一篇: 谈协同软件实施特点与过程