更改在 C# 中以编程方式创建的标签的文本?

txt1当应用程序运行时(在运行时),我在私有 void 中以编程方式创建了一个标签,我想在另一个私有 void 中更改此标签的文本,但我无法txt1从另一个 void访问!


用于动态创建标签的脚本:


private void labelCreate() 

{

Label txt1 = new Label();

}

用于更改txt1已在labelCreatevoid 中创建的文本的脚本(& 此脚本不起作用,因为txt1尚未声明为控件):


private void labelTextChange()

{

txt1.Text = "Hello World!";

}

更新 1:我需要创建 100 个具有不同名称的标签,然后我将使用一个for语句来创建 100 个标签。我不能声明 100 个全局变量。所以我需要传递变量而不是将它们声明为全局变量。


更新 2:是否可以将for语句中的100 个标签声明为全局?


更新 3:假设我想从数据库中获取一些数据,我想在唯一标签中分别显示它们。因此,我为每个标签命名并根据从数据库获得的不同数据更改它们的文本!所以我需要 2 个空白:一个用于根据我从 DB 获得的行数创建标签,另一个用于更改我之前创建的标签文本!


问题:如何访问在不同空间中创建的控件?如果有答案,请分享链接:)


明月笑刀无情
浏览 148回答 3
3回答

侃侃无极

Label在您的班级中全局声明Label txt1;private void labelCreate()&nbsp;{&nbsp; txt1 = new Label();}比用另一种方法访问private void labelTextChange(){&nbsp;txt1.Text = "Hello World!";}编辑 1如果您有多个标签,则在创建标签时,您可以将这些对象存储在一个数组中,当您需要更改这些文本时,请执行以下操作Label[] labelsArray //declare globallyprivate void labelTextChange(){&nbsp; &nbsp; // Get Label objects from array&nbsp; &nbsp; labelsArray = { label1, label2, label3, label4, label5 };&nbsp; &nbsp; for (int i = 0; i < labelsArray.Count(); i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; labelsArray[i].Text = "Hello.. " + (i + 1).ToString();&nbsp; &nbsp; }}

慕标琳琳

如果您有动态数量的标签,则可以使用列表。List<Label> labels;private void labelCreate()&nbsp;{&nbsp; &nbsp; labels = new List<Label>();&nbsp;&nbsp; &nbsp; for(int i = 0; i < 100; i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; labels.Add(new Label());&nbsp; &nbsp; }&nbsp; &nbsp;}private void labelTextChange(){&nbsp; &nbsp;&nbsp; &nbsp; // use the index or search for the name of the label&nbsp; &nbsp; labels[42].Text = "Hello World!";}以下是一些有关变量生命周期及其可访问性(可以从中读取和/或写入变量的位置)的信息,您可以找到 helpflul。

拉丁的传说

在您的代码中 Label1 是一个私有变量,无法在 labelTextChange 方法中访问。您需要将 txt1 声明为类变量。Label txt1;&nbsp;private void labelCreate()&nbsp;&nbsp; &nbsp; {&nbsp; &nbsp; txt1 = new Label();&nbsp; &nbsp; }&nbsp; &nbsp; private void labelTextChange()&nbsp; &nbsp; {&nbsp; &nbsp; txt1.Text = "Hello World!";&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP