窗体应用程序,放了个treeview控件,并设置了节点显示checkbox,现在是想取所有勾选节点的checkbox的node.text,并把这些text存入一个数组,请教方法(不懂要遍历哪个),
因为是窗体应用程序的,又不能用js去做,请大虾们指教下,谢谢~~

解决方案 »

  1.   

    <%@ Page Language="C#" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">  void Button_Click(Object sender, EventArgs e)
      {    if(LinksTreeView.CheckedNodes.Count > 0)
        {      // Clear the message label.
          Message.Text = "You selected: <br /><br />";      // Iterate through the CheckedNodes collection and display the selected nodes.
          foreach (TreeNode node in LinksTreeView.CheckedNodes)
          {        Message.Text += node.Text + "<br />";      }    }    else
        {      Message.Text = "No items selected.";    }  }</script><html xmlns="http://www.w3.org/1999/xhtml" >
      <head runat="server">
        <title>TreeView ShowCheckBoxes Example</title>
    </head>
    <body>
        <form id="form1" runat="server">      <h3>TreeView ShowCheckBoxes Example</h3>      <!-- Set the ShowCheckBoxes property declaratively.   -->
          <!-- Because the ShowCheckBoxes property uses a flag  -->
          <!-- enumeration, you can combine multiple values by  -->
          <!-- using the bitwise OR operator. In declarative    -->
          <!-- syntax, this is done using a comma separated     -->
          <!-- list.                                            -->
          <asp:TreeView id="LinksTreeView"
            Font-Names= "Arial"
            ForeColor="Blue"
            ExpandDepth="2"
            ShowCheckBoxes="Parent,Leaf" 
            runat="server">        <LevelStyles>          <asp:TreeNodeStyle ChildNodesPadding="10" 
                Font-Bold="true" 
                Font-Size="12pt" 
                ForeColor="DarkGreen"/>
              <asp:TreeNodeStyle ChildNodesPadding="5" 
                Font-Bold="true" 
                Font-Size="10pt"/>
              <asp:TreeNodeStyle ChildNodesPadding="5" 
                Font-UnderLine="true" 
                Font-Size="10pt"/>
              <asp:TreeNodeStyle ChildNodesPadding="10" 
                Font-Size="8pt"/>        </LevelStyles>        <Nodes>          <asp:TreeNode Text="Table of Contents"
                SelectAction="None">            <asp:TreeNode Text="Chapter One">              <asp:TreeNode Text="Section 1.0">                <asp:TreeNode Text="Topic 1.0.1"/>
                    <asp:TreeNode Text="Topic 1.0.2"/>
                    <asp:TreeNode Text="Topic 1.0.3"/>              </asp:TreeNode>              <asp:TreeNode Text="Section 1.1">                <asp:TreeNode Text="Topic 1.1.1"/>
                    <asp:TreeNode Text="Topic 1.1.2"/>
                    <asp:TreeNode Text="Topic 1.1.3"/>
                    <asp:TreeNode Text="Topic 1.1.4"/>              </asp:TreeNode>            </asp:TreeNode>            <asp:TreeNode Text="Chapter Two">              <asp:TreeNode Text="Section 2.0">                <asp:TreeNode Text="Topic 2.0.1"/>
                    <asp:TreeNode Text="Topic 2.0.2"/>              </asp:TreeNode>            </asp:TreeNode>          </asp:TreeNode>
              <asp:TreeNode Text="Appendix A" />
              <asp:TreeNode Text="Appendix B" />
              <asp:TreeNode Text="Appendix C" />        </Nodes>      </asp:TreeView>      <br /><br />      <asp:Button id="Submit"
            Text="Select Items"
            OnClick="Button_Click"  
            runat="server"/>      <br /><br />      <asp:Label id="Message"
            runat="server"/>    </form>
      </body>
    </html>
      

  2.   

    参考MSDN:
    ms-help://MS.MSDNQTR.v90.en/dtsref9mref/html/d1ee7e45-80a0-a249-8235-2bc7263fd018.htm
      

  3.   

    谢谢ls先了,不过我这个是C#窗体应用程序,不是web的,LinksTreeView.CheckedNodes这个没有的(web的就有)
      

  4.   

    不用去遍历,加个AfterCheck事件记录checked节点就行了
    List<string> checkedList=new List<string>();//存放checked节点
            private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
            {
                if (e.Node.Checked)
                {
                    checkedList.Add(e.Node.Name);
                }
                else
                {
                    checkedList.Remove(e.Node.Name);
                }
            }        private void button1_Click(object sender, EventArgs e)
            {
                string[] checkedSet = checkedList.ToArray(); //取得checked数组    
            }