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

how to change text dynamically added button c#

添加按钮:

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

给我错误:

Error 1 The name 'btn55' does not exist in the current context

使用this.Controls.Find("btn55",true).FirstOrDefault().Text = "BBB";

您需要在其父控制器中搜索该按钮。假设您有一个主窗体和放置在其中的按钮。您可以在父级中找到使用控件的 id。 (MainForm.Controls.Find("btn"+number") as Button).Text= "BBB";

如果您使用设计器将按钮放在窗体中,则会创建一个与窗体名称同名的成员变量。当您使用代码创建按钮时,没有 btn55 变量。

当您创建按钮时,您可以引用它。您应该只保留该参考,以便您以后可以使用它。在可以存储它的表单中创建一个成员变量,即在表单 class 中声明 Button button; (或者可能更具描述性的名称)而不是在创建按钮的方法中。然后你可以稍后使用变量来访问按钮。

试试这个:

var btn = Controls.Find("btn55") as Button;
btn.Text = BBB;

您的全部问题在于页面加载。当您单击按钮事件时,页面会回发,因此如果您的控件未重新加载,则在调用单击事件时它不再存在。您没有在回发时创建按钮,或者按钮不在视图状态中。在创建按钮之前,查找控件将始终 return 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

一旦重新加载该控件,就可以很容易地从那里获取它。