gpt4 book ai didi

c# - 在 C#.net 运行时创建按钮?

转载 作者:行者123 更新时间:2023-12-02 14:15:09 25 4
gpt4 key购买 nike

我知道如何在运行时创建按钮。

Button button1 = new Button();

button1.Location = new Point(20,10);
button1.Text = "Click Me";
// adding to groupBox1
groupBox1.Controls.Add(button1);

但问题是我想添加多个这样的按钮..

for(int i = 1; i < 30; i++) {
Button button[i] = new Button();
// Button customization here...
...
groupBox1.Controls.Add(button[i]);

}

上面的代码是错误代码。我怎样才能在 C#.net 中实现这一点?我想创建多个按钮,按钮名称为:button1、button2、button3、button4、...button30;

最佳答案

在 C# 中,您无法在执行时声明额外的变量 - 但无论如何您确实不想这样做,因为之后您将无法访问它们。只需创建一个数组:

// buttons would be declared as Button[] as a member variable
buttons = new Button[30];
for(int i = 0; i < buttons.Length; i++) {
buttons[i] = new Button();
// Button customization here...
...
groupBox1.Controls.Add(buttons[i]);
}

或者,使用 List<Button> ,如果您事先不知道需要多少个按钮,这肯定会更方便。 (请参阅必填的 "arrays considered somewhat harmful" 博客文章。)

当然,如果您稍后实际上不需要访问这些按钮,则不必费心将它们分配给循环外部的任何可见内容:

for(int i = 0; i < 30; i++) {
Button button = new Button();
// Button customization here...
...
groupBox1.Controls.Add(button);
}

您需要考虑您需要在何时访问哪些信息以及您希望如何访问这些信息。如果您在逻辑上有一个按钮集合,则应该使用集合类型变量(如列表或数组)。

坦率地说,我认为这是 VS 设计者的诅咒之一,你最终会得到诸如“groupBox1”之类的可怕名称,它不携带超出类型声明中已有信息的信息,并鼓励开发人员通过单独的方式考虑控件集合- 命名变量。但这只是我脾气暴躁:)

关于c# - 在 C#.net 运行时创建按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com