0

ツリービューの選択に基づいて表示されるWinFormに複数のグループボックスがあります。すべてのグループで1つのボタンのみを使用したいのですが、ツリービューの選択に基づいて一意のメソッドを呼び出す必要があります。これを行うにはどうすればよいですか?

4

1 に答える 1

1

選択した treeView ノードに応じて何かを行うには、TreeView コントロールの AfterSelect イベントでこれを行うことができます (1 つの TreeView、4 つの GroupBoxes、およびbutton1という名前の 1 つのボタンがあると仮定します)。

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            //Get current selected node
            TreeNode treenode = treeView1.SelectedNode;

            //Position the button so it will be visible, change according needs
            button1.Location = new Point(20, 20);

            //I'm making the selection using "Text" property
            switch (treenode.Text)
            {
                case "1":
                    changeVisible(groupBox1); //Hide all GroupBoxes excep groupBox1
                    groupBox1.Controls.Add(button1);//Add the button1 to GroupBox1 Controls property

                    //You can execute a specific ethod for this case here.
                    //DoSomethingForTreeNode1();

                    break;
                case "2":
                    changeVisible(groupBox2);
                    groupBox2.Controls.Add(button1);
                    break;
                case "3":
                    changeVisible(groupBox3);
                    groupBox3.Controls.Add(button1);
                    break;
                case "4":
                    changeVisible(groupBox4);
                    groupBox4.Controls.Add(button1);
                    break;
            }
        }


        //The only purpouse of this method is to hide all but the desired GroupBox control
        private void changeVisible(GroupBox groupBox)
        {
            //Loop across all Controls in the current Form
            foreach (Control c in this.Controls)
            {
                if(c.GetType() == typeof(GroupBox))
                {
                    if(c.Equals(groupBox))
                    {
                        c.Visible = true;

                    }
                    else
                    {
                        c.Visible = false;
                    }

                }

            }
        }

それが役立つことを願って、

于 2013-02-26T19:37:04.303 に答える