1

2 つの UserControls (UserControl1 と UserControl2 という名前) を作成し、1 つを動的にパネルに追加します。

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);
}
4

3 に答える 3

4

You need the user control to be typed as Your control. UserControl1 or UserControl2 (not UserControl)

And as Adam mentioned, if you haven't already made things publicly accessible, you'll need to deal with that as well.

于 2012-06-06T17:46:51.467 に答える
3

After you appropriately type yoozerControl, as @Kenneth said (+1 to him), you'll need to expose those textboxes as public properties of your user control:

public TextBox yourTB{
    get { return TextBox1; }
}

Or, to be a bit cleaner, just expose a property that returns the textbox's text, which is what you seem to need.

public string yourTBsText {
    get { return TextBox1.Text; }
}
于 2012-06-06T17:46:22.207 に答える
2

ユーザー コントロールで、公開するコントロールを選択し、プロパティ ウィンドウを確認します。「Modifiers」プロパティを「Public」に変更して、可視性を最大限に高めます。

于 2012-06-06T17:48:11.287 に答える