Visual Studio c#多重按钮数组

本文关键字:按钮 数组 Studio Visual | 更新日期: 2023-09-27 18:06:58

在我的Windows窗体应用程序(c#)中,我有一个按钮元素的网格(btn0, btn1,…[翻译]:我已经到处找了一段时间了,但是我找不到我一直在寻找的答案。

问题是我如何同时改变所有按钮的属性。首先,我尝试格式化这样的字符串:"btn" + id, (id是按钮编号),这样我就可以在字符串中拥有每个按钮名称。但后来我有一个问题,从字符串到按钮(类型)的变化。有办法做到吗?我尝试做的另一件事是创建一个按钮数组,但也没有成功。

这两种方法中的一种可能吗?

Visual Studio c#多重按钮数组

假设所有按钮都位于名为parent:

的控件中。
foreach(Button btn in parent.Controls.OfType<Button>())
{
  // do something with btn
  // eg btn.Text = "New Text";
}

如果按钮直接在表单中,则使用this代替parent。如果按钮在某种面板中,则使用panelName代替parent。

以上之所以有效,是因为正如您所述,所有按钮共享相同的父按钮。但是,如果在其他一些场景中,您在不同的父节点(例如面板)中有按钮,则需要执行一些递归或指定多个特定的父节点来循环。

你可以通过

Controls.Find("btn1", true);

其中btn1是按钮的名称(您生成的字符串)

首先,为什么不使用一个数组或按钮列表来代替button1,button2呢?

Button[] buttons=new Button[size];
....................
button[i].Property="value";

如果你不想改变,那么其他的选择是在Form上使用linq查询。控件,

var buttons = from button in Controls.OfType<Button>() where
button.Name.StartsWith("btn") select button ;

这将为您提供与您的模式匹配的所有按钮列表。或者使用"button"。Name=="btn" + id"以获得您正在寻找的确切按钮。

var buttons = from button in Controls.OfType<Button>() where
button.Name=="btn"+id select button ;