[英]Is there a way to access and change a value in a custom control that was added, programmatically, to a panel?
[英]How to access to a Control added to a panel?
我正在尝试修改之前添加到面板 (MyPanel.Controls.Add(MyLabel) 的 label (label.Text) 的文本。
我将 label 添加到 function 的面板中:
public PanelEx nameoffunction()
{
.
.
MyPanel.Controls.Add(MyLabel);
return MyPanel;
.
.
}
MyPanelWithControl = nameoffunction();
现在我在MyPanelWithControl
的面板。 我现在如何访问之前添加的 label 以修改其字段之一?
您可以使用其 Name 属性找到一个控件:
MyLabel.Name = "label1";
MyPanel.Controls.Add(MyLabel);
...
MyPanel.Controls["label1"].Text = "updated text";
但是,如果您对用户界面进行更改,这种方法可能会在以后导致问题。 如果您将 label 移动到另一个面板,或更改其名称,则尝试使用该名称查找它的代码仍会编译,但在运行时会导致错误。 对于长期项目,最好将控件的引用存储为属性:
public class PanelEx : Panel {
...
public Label MyLabel { get; set; }
}
public PanelEx nameoffunction() {
...
MyPanel.MyLabel = MyLabel;
return MyPanel;
}
然后您可以直接从面板 object 访问 Label:
MyPanel.MyLabel.Text = "updated text";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.