如何动态更改文本添加按钮c#

时间:2015-02-14 22:36:59

标签: c# button

添加按钮:

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”

5 个答案:

答案 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,因此大部分答案都不适合您。

这些页面可以帮助您:

http://forums.asp.net/t/1186195.aspx?FAQ+Why+do+dynamic+controls+disappear+on+postback+and+not+raise+events+

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";