C# 如何以编程方式更改按钮文本?

C# 如何以编程方式更改按钮文本?,c#,.net,winforms,C#,.net,Winforms,我试图以编程方式更改按钮的文本。我有许多按钮的名称格式是btnXXX,其中XXX是一个数字 databaseFunc.SelectThings("uspSelectCategoryNames", noParam, noValue); dataTable = databaseFunc.dataTable; for (int x = 0; x < dataTable.Rows.Count; x++) { btn[x].Text = dataTable.Row[0][0].ToStrin

我试图以编程方式更改按钮的文本。我有许多按钮的名称格式是
btnXXX
,其中
XXX
是一个数字

databaseFunc.SelectThings("uspSelectCategoryNames", noParam, noValue);
dataTable = databaseFunc.dataTable;
for (int x = 0; x < dataTable.Rows.Count; x++)
{
    btn[x].Text = dataTable.Row[0][0].ToString();        
}
databaseFunc.SelectThings(“uspSelectCategoryNames”,noParam,noValue);
dataTable=databaseFunc.dataTable;
对于(int x=0;x

如何获取此作业中名为
btnXXX
的按钮:
btn[x]

您可以创建包含按钮的数组。您可以使用索引轻松检索它们:

Button[] buttons = new Button[] { btn0, btn1, btn2 };

buttons[0].Text = "abc";
这将设置第一个按钮的
文本

另一个选项是用于查找具有特定名称的控件。请注意,
Find
调用中的
true
也会搜索子控件:

Control[] matches = this.Controls.Find("btn0", true);

Button b = matches.Length > 0 ? matches[0] as Button : null;

if (b != null)
{ }

您可以创建一个包含按钮的数组。您可以使用索引轻松检索它们:

Button[] buttons = new Button[] { btn0, btn1, btn2 };

buttons[0].Text = "abc";
这将设置第一个按钮的
文本

另一个选项是用于查找具有特定名称的控件。请注意,
Find
调用中的
true
也会搜索子控件:

Control[] matches = this.Controls.Find("btn0", true);

Button b = matches.Length > 0 ? matches[0] as Button : null;

if (b != null)
{ }


但你的按钮代码在哪里?你没编程序吗?结果如何?是否有错误消息?发生了什么,问题到底是什么?请显示btn的定义。是否更改按钮的名称或文本?我是否理解您的意思,您从数据库中读取了N个类别,并希望为您读取的每个类别创建一个按钮?按钮的名称是btn0、btn1等。因此,是的,我正在尝试在循环过程中更改按钮的文本。如果有意义的话?您正在使用.Text,您想更改名称吗?为什么不使用.Name?但按钮的代码在哪里?你没编程序吗?结果如何?是否有错误消息?发生了什么,问题到底是什么?请显示btn的定义。是否更改按钮的名称或文本?我是否理解您的意思,您从数据库中读取了N个类别,并希望为您读取的每个类别创建一个按钮?按钮的名称是btn0、btn1等。因此,是的,我正在尝试在循环过程中更改按钮的文本。如果有意义的话?您正在使用.Text,您想更改名称吗?为什么不使用.Name?要通过字符串访问它们,请使用字典@TaW:我看不到
Find
@TaW的附加值:与犯错误的可能性相比,我怀疑它的有用性。如果您对它进行了大量操作,它可能会获得性能提升。我更喜欢第一种方式,因为
intx
是实际的基数;我以为他想动态地改变名字。@TaW:那是个打字错误。查看注释。要通过字符串访问它们,请使用字典@TaW:我看不到
Find
@TaW的附加值:与犯错误的可能性相比,我怀疑它的有用性。如果您对它进行了大量操作,它可能会获得性能提升。我更喜欢第一种方式,因为
intx
是实际的基数;我以为他想动态地改变名字。@TaW:那是个打字错误。见评论。