【问题标题】:C# - Associate panel to button when created programmaticallyC# - 以编程方式创建时将面板关联到按钮
【发布时间】:2017-06-10 19:36:17
【问题描述】:

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

我想以编程方式创建一个按钮,创建后,将其关联到一个面板,该面板将在单击该按钮时显示和隐藏。有人可以帮我吗?

我忘了告诉你一件事。面板也需要以编程方式创建。

【问题讨论】:

标签: c# button panel


【解决方案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;
};

【讨论】:

  • 他想将它与面板关联,也许改用Panel.Controls?
  • 我相信他只想与事件处理程序建立关联。否则,如果我将按钮添加到面板,它会在第一次单击后消失,对吧?
  • 也可以这样:)
【解决方案2】:

面板也是动态创建的吗? – Idle_Mind

@Idle_Mind 是的,是的。我忘了提——DannyDSB官方

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

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);
}

【讨论】:

    【解决方案3】:

    首先您需要面板的名称。你需要设置它的可见性属性来改变可见性(duh。)

    要在单击按钮时执行此操作,您需要为其附加一个事件处理程序。我们首先假设为了简单起见,您将新创建的按钮称为“myButton”。

    首先创建处理函数

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

    然后将函数分配给点击处理程序

    myButton.Click += myButton_Click;
    

    【讨论】:

    • 谢谢,但我忘了提到面板需要像按钮一样以编程方式创建。你知道如何建立它们之间的关联吗?
    • 完全一样。只需创建您的面板对象(在本例中名为“面板”)并将其存储在类范围的可用变量中。
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多