C# - 以编程方式创建时将面板关联到按钮
C# - Associate panel to button when created programmatically
我想用 C# 制作一个示例应用程序,向我的同学(我是 10 年级)展示无线设备控制器接口是如何工作的。我知道如何编写大部分程序,但我不知道如何做一件事。
我想以编程方式创建一个按钮,创建后,将其关联到一个面板,该面板将在单击该按钮时显示和隐藏。有人可以帮助我吗?
我忘了告诉你一件事。该面板也需要以编程方式创建。
首先您需要面板的名称。您需要设置其可见性 属性 以更改可见性(呃。)
要在单击按钮时执行此操作,您需要为其附加一个事件处理程序。为简单起见,我们首先假设您将新创建的按钮命名为 "myButton"。
首先创建处理函数
void myButton_Click(object sender, RoutedEventArgs e){
panel.visibility = whatever;
}
然后使用
将函数分配给点击处理程序
myButton.Click += myButton_Click;
创建面板:
var panel = new Panel();
this.Controls.Add(panel);
创建按钮:
var button = new Button();
this.Controls.Add(button);
向按钮添加事件处理程序:
button.Click += (o,e) =>
{
panel.Visible = !panel.Visible;
};
Is the Panel also created dynamically? – Idle_Mind
@Idle_Mind yes, it is. I forgot to mention it – DannyDSB Official
最简单的方法是简单地在按钮的 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);
}
我想用 C# 制作一个示例应用程序,向我的同学(我是 10 年级)展示无线设备控制器接口是如何工作的。我知道如何编写大部分程序,但我不知道如何做一件事。
我想以编程方式创建一个按钮,创建后,将其关联到一个面板,该面板将在单击该按钮时显示和隐藏。有人可以帮助我吗?
我忘了告诉你一件事。该面板也需要以编程方式创建。
首先您需要面板的名称。您需要设置其可见性 属性 以更改可见性(呃。)
要在单击按钮时执行此操作,您需要为其附加一个事件处理程序。为简单起见,我们首先假设您将新创建的按钮命名为 "myButton"。
首先创建处理函数
void myButton_Click(object sender, RoutedEventArgs e){
panel.visibility = whatever;
}
然后使用
将函数分配给点击处理程序myButton.Click += myButton_Click;
创建面板:
var panel = new Panel();
this.Controls.Add(panel);
创建按钮:
var button = new Button();
this.Controls.Add(button);
向按钮添加事件处理程序:
button.Click += (o,e) =>
{
panel.Visible = !panel.Visible;
};
Is the Panel also created dynamically? – Idle_Mind
@Idle_Mind yes, it is. I forgot to mention it – DannyDSB Official
最简单的方法是简单地在按钮的 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);
}