[英]How to access the controls on a UserControl?
我創建了兩個UserControl(分別命名為UserControl1和UserControl2),並向面板中動態添加了一個:
UserControl yoozerControl;
if (pi != pie) {
yoozerControl = new UserControl1();
} else {
yoozerControl = new UserControl2();
}
panel1.Controls.Add(yoozerControl);
yoozerControl.Dock = DockStyle.Fill;
但是,我無法訪問UserControls的成員。 例如,UserControl1有一個TextBox1,但是不會編譯:
UserControl yoozerControl;
if (pi != pie) {
yoozerControl = new UserControl1();
String s = yoozerControl.TextBox1.Text;
. . .
我該怎么做才能訪問UserControls上控件的屬性?
// I was able to successfully test this by changing UserControl1's TextBox1 Modifier
// property to public, and the same with UserControl2's label1 Modifier property.
UserControl1 yoozerControl = null;
UserControl2 yowzerControl = null;
String s = String.Empty;
if (AppType.Equals(SearchTypes.Platypus)) {
yoozerControl = new UserControl1();
s = yoozerControl.textBox1.Text;
} else {
yowzerControl = new UserControl2();
s = yowzerControl.label1.Text;
}
if (!(null == yoozerControl)) {
panel1.Controls.Add(yoozerControl);
yoozerControl.Dock = DockStyle.Fill;
MessageBox.Show(s);
}
if (!(null == yowzerControl)) {
panel1.Controls.Add(yowzerControl);
yowzerControl.Dock = DockStyle.Fill;
MessageBox.Show(s);
}
您需要將用戶控件鍵入為您的控件。 UserControl1或UserControl2(不是UserControl)
正如亞當(Adam)所述,如果您尚未公開發布內容,則也需要處理。
在正確鍵入yoozerControl之后,如@Kenneth所說(對他+1),您需要將這些文本框公開為用戶控件的公共屬性:
public TextBox yourTB{
get { return TextBox1; }
}
或者,為了更簡潔一點,只需公開一個屬性,該屬性返回文本框的text ,這似乎是您需要的。
public string yourTBsText {
get { return TextBox1.Text; }
}
在用戶控件上,選擇要公開的控件,然后查看屬性窗口。 將“修飾符”屬性更改為“公共”以使其更具可見性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.