加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:28:04 所属栏目:百科 来源:网络整理
导读:在visual studio中,如何访问托管用户控件的表单上的控件?例如,当文本在用户控件的文本框中更改时,我希望另一个用户控件中的另一个文本框中的文本更改.这两个用户控件都托管在同一表单上.提前致谢! 解决方法 如果你需要不同的数据输入用户界面,我更喜欢有两
在visual studio中,如何访问托管用户控件的表单上的控件?例如,当文本在用户控件的文本框中更改时,我希望另一个用户控件中的另一个文本框中的文本更改.这两个用户控件都托管在同一表单上.提前致谢!

解决方法

如果你需要不同的数据输入用户界面,我更喜欢有两个不同用户界面的控件,但我会为它们使用一个数据源,并使用数据绑定来处理场景.

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

你的问题的答案:

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

控制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;
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读