C# - 以编程方式创建时将面板关联到按钮

时间:2017-06-10 19:36:17

标签: c# button panel

我想用C#做一个示例应用程序向同学们展示(我10年级)无线设备控制器接口如何工作。我知道如何编写大部分程序,但我不知道如何做一件事。

我想以编程方式创建一个按钮,一旦创建它,​​就会关联一个面板,该面板将在单击该按钮时显示和隐藏。有人能帮助我吗?

我忘了告诉你什么。该面板也需要以编程方式创建。

3 个答案:

答案 0 :(得分:1)

创建面板:

var panel = new Panel();
this.Controls.Add(panel);

创建按钮:

var button = new Button();
this.Controls.Add(button);

向按钮添加事件处理程序:

button.Click += (o,e) =>
{
  panel.Visible = !panel.Visible;
};

答案 1 :(得分:0)

首先,您需要面板的名称。您需要设置其visibility属性以更改可见性(duh。)

要在按钮单击时执行此操作,您需要将事件处理程序附加到它。让我们首先假设您为了简单而调用了新创建的按钮“myButton”。

首先创建处理函数

void myButton_Click(object sender, RoutedEventArgs e){
    panel.visibility = whatever;
}

稍后将该函数分配给具有

的单击处理程序
myButton.Click += myButton_Click;

答案 2 :(得分:0)

  

Panel是否也是动态创建的? - Idle_Mind

     

@Idle_Mind是的,确实如此。我忘了提它 - DannyDSB官方

最简单的方法是在Button的Tag()属性中简单地存储对Panel的引用。这是一个愚蠢的例子:

private void button1_Click(object sender, EventArgs e)
{
    Panel pnl = new Panel();
    pnl.BorderStyle = BorderStyle.FixedSingle;
    pnl.BackColor = Color.Red;

    Button btn = new Button();
    btn.Text = "Toggle Panel";
    btn.Tag = pnl;
    btn.Click += delegate {
        Panel p = (Panel)btn.Tag;
        p.Visible = !p.Visible;
    };

    flowLayoutPanel1.Controls.Add(btn);
    flowLayoutPanel1.Controls.Add(pnl);
}