C# · 2月 23, 2022

c# – 如何在用户控件WinForm中访问托管表单上的控件

在visual studio中,如何访问托管用户控件的表单上的控件?例如,当文本在用户控件的文本框中更改时,我希望另一个用户控件中的另一个文本框中的文本更改.这两个用户控件都托管在同一表单上.提前致谢!解决方法 如果你需要不同的数据输入用户界面,我更喜欢有两个不同用户界面的控件,但我会为它们使用一个数据源,并使用数据绑定来处理场景.

如果将两个控件绑定到单个数据源,则可以使用不同的UI,但是只有一个数据,并且两个控件数据都是同步的.

你的问题的答案:

您可以在每个控件中定义一个属性,该属性设置Text@R_173_2419@的Text.然后你可以处理Text@R_173_2419@的TextChanged事件,然后找到另一个控件并设置text属性:

控制1

public partial class MyControl1 : UserControl{ public MyControl1() { InitializeComponent(); } public string Text@R_173_2419@1Text { get { return this.text@R_173_2419@1.Text; } set { this.text@R_173_2419@1.Text = value; } } private void text@R_173_2419@1_TextChanged(object sender,EventArgs e) { if (Parent != null) { var control1 = Parent.Controls.OfType<MyControl2>().FirstOrDefault(); if (control1 != null && control1.Text@R_173_2419@1Text != this.text@R_173_2419@1.Text) control1.Text@R_173_2419@1Text = this.text@R_173_2419@1.Text; } }}

控制2

public partial class MyControl2 : UserControl{ public MyControl2() { InitializeComponent(); } public string Text@R_173_2419@1Text { get { return this.text@R_173_2419@1.Text; } set { this.text@R_173_2419@1.Text = value; } } private void text@R_173_2419@1_TextChanged(object sender,EventArgs e) { if (Parent != null) { var control1 = Parent.Controls.OfType<MyControl1>().FirstOrDefault(); if (control1 != null) control1.Text@R_173_2419@1Text = this.text@R_173_2419@1.Text; } }}