如何在用户控件 WinForm 中访问托管窗体上的控件
How to access controls on hosted form in a user control WinForm
在 visual studio 中,您如何访问承载用户控件的窗体上的控件?例如,当用户控件中的文本框中的文本发生变化时,我希望另一个用户控件中的另一个文本框中的文本发生变化。这两个用户控件都托管在同一个窗体上。提前致谢!
如果您需要不同的 UI 进行数据输入,我更喜欢使用 2 个具有不同 UI 的控件,但我将为它们使用单个数据源并使用数据绑定处理该场景.
如果您将两个控件绑定到一个数据源,虽然您可以有不同的 UI,但您有一个数据并且两个控件数据是同步的。
您问题的答案:
您可以在每个控件中定义一个属性,其中设置Text
of TextBox
。然后你可以处理 TextBox
的 TextChanged
事件,然后找到另一个控件并设置文本 属性:
控件1
public partial class MyControl1 : UserControl
{
public MyControl1() { InitializeComponent(); }
public string TextBox1Text
{
get { return this.textBox1.Text; }
set { this.textBox1.Text = value; }
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (Parent != null)
{
var control1 = Parent.Controls.OfType<MyControl2>().FirstOrDefault();
if (control1 != null && control1.TextBox1Text != this.textBox1.Text)
control1.TextBox1Text = this.textBox1.Text;
}
}
}
控制2
public partial class MyControl2 : UserControl
{
public MyControl2() { InitializeComponent(); }
public string TextBox1Text
{
get { return this.textBox1.Text; }
set { this.textBox1.Text = value; }
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (Parent != null)
{
var control1 = Parent.Controls.OfType<MyControl1>().FirstOrDefault();
if (control1 != null)
control1.TextBox1Text = this.textBox1.Text;
}
}
}
在 visual studio 中,您如何访问承载用户控件的窗体上的控件?例如,当用户控件中的文本框中的文本发生变化时,我希望另一个用户控件中的另一个文本框中的文本发生变化。这两个用户控件都托管在同一个窗体上。提前致谢!
如果您需要不同的 UI 进行数据输入,我更喜欢使用 2 个具有不同 UI 的控件,但我将为它们使用单个数据源并使用数据绑定处理该场景.
如果您将两个控件绑定到一个数据源,虽然您可以有不同的 UI,但您有一个数据并且两个控件数据是同步的。
您问题的答案:
您可以在每个控件中定义一个属性,其中设置Text
of TextBox
。然后你可以处理 TextBox
的 TextChanged
事件,然后找到另一个控件并设置文本 属性:
控件1
public partial class MyControl1 : UserControl
{
public MyControl1() { InitializeComponent(); }
public string TextBox1Text
{
get { return this.textBox1.Text; }
set { this.textBox1.Text = value; }
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (Parent != null)
{
var control1 = Parent.Controls.OfType<MyControl2>().FirstOrDefault();
if (control1 != null && control1.TextBox1Text != this.textBox1.Text)
control1.TextBox1Text = this.textBox1.Text;
}
}
}
控制2
public partial class MyControl2 : UserControl
{
public MyControl2() { InitializeComponent(); }
public string TextBox1Text
{
get { return this.textBox1.Text; }
set { this.textBox1.Text = value; }
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (Parent != null)
{
var control1 = Parent.Controls.OfType<MyControl1>().FirstOrDefault();
if (control1 != null)
control1.TextBox1Text = this.textBox1.Text;
}
}
}