添加按钮:
Button button = new Button();
this.Controls.Add(button);
button.Name = "btn" + id;
button.Text = "AAAA";
结果是按钮的名称为btn55
,但是,如何更改按钮名称btn55
上的文字?
类似
private void btnaktual_Click(object sender, EventArgs e)
{
btn55.Text = "BBB";
}
给我错误:
错误1当前上下文中不存在名称“btn55”
答案 0 :(得分:1)
使用this.Controls.Find("btn55",true).FirstOrDefault().Text = "BBB";
答案 1 :(得分:1)
如果您使用设计器将按钮放在表单中,则会创建一个与表单名称同名的成员变量。在使用代码创建按钮时,没有btn55
变量。
创建按钮时,您可以参考它。您应该保留该引用,以便以后可以使用它。在可以存储它的表单中创建成员变量,即在表单类中声明Button button;
(或者可能是更具描述性的名称),而不是在创建按钮的方法内部。然后您可以稍后使用该变量来访问该按钮。
答案 2 :(得分:0)
试试这个:
var btn = Controls.Find("btn55") as Button;
btn.Text = BBB;
答案 3 :(得分:0)
您的整个问题在于页面加载。当您单击按钮事件时页面会回发,因此如果您未重新加载控件,则在调用click事件时它不再存在。您要么不在回发时创建按钮,要么按钮不在视图状态中。在创建按钮之前,Find Control将始终返回null,因此大部分答案都不适合您。
这些页面可以帮助您:
Dynamically Created Controls losing data after postback
http://www.codeproject.com/Articles/35360/ViewState-in-Dynamic-Control
一旦你重新加载了这个控件,你就可以很容易地从那里获得它。
答案 4 :(得分:-1)
您需要在其父控制器中搜索按钮。我们假设您有一个主表单并且按钮放在其中。您可以在父级中找到使用控制ID。
(MainForm.Controls.Find("btn"+number") as Button).Text= "BBB";