【问题标题】:how to change text dynamically added button c#如何更改文本动态添加按钮c#
【发布时间】:2015-02-14 22:36:58
【问题描述】:

添加按钮:

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”

【问题讨论】:

  • 事件中应该是button.Text = "BBB"

标签: c# button


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您的整个问题在于页面加载。当您单击按钮事件时,页面会回发,因此如果您没有重新加载控件,则在调用单击事件时它不再存在。要么您没有在回发时创建按钮,要么按钮不在视图状态中。在创建按钮之前,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

      一旦你重新加载了那个控件,你就可以很容易地从那里得到它。

      【讨论】:

      • 所以你确定它不是一个winforms应用程序。
      • 如果他指定会有所帮助,我认为它是 .net。如果不是,他可以忽略它,也许会帮助别人。
      【解决方案4】:

      试试这个:

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

      【讨论】:

      • Controls.Find 返回Controls[],因此您不能将其转换为Button。查看Rariolu的回答
      • 你需要解释你的代码:OP的代码有什么问题,为什么这样可以解决问题,等等。
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2014-04-15
        • 1970-01-01
        • 2019-03-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        • 2021-11-25
        • 1970-01-01
        • 2020-02-15
        相关资源
        最近更新 更多