Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows窗体应用程序中两个用户控件之间的交互_C#_.net_Winforms_User Controls - Fatal编程技术网

C# windows窗体应用程序中两个用户控件之间的交互

C# windows窗体应用程序中两个用户控件之间的交互,c#,.net,winforms,user-controls,C#,.net,Winforms,User Controls,我创建了两个名为UserControl1和UserControl2,UserControl1包含TextBox1和UserControl2包含按钮1。在UserControl2中,我想在单击按钮1时从UserControl1获取TextBox1.Text 这是相关代码: 在UserControl1中: public partial class UserControlA: UserControl { public UserControlA() { Initiali

我创建了两个名为
UserControl1
UserControl2
UserControl1
包含
TextBox1
UserControl2
包含
按钮1
。在
UserControl2
中,我想在单击
按钮1
时从
UserControl1
获取
TextBox1.Text

这是相关代码: 在
UserControl1
中:

 public partial class UserControlA: UserControl
{
    public UserControlA()
    {
        InitializeComponent();
    }

    public string TexBoxText
    {
        get
        {
            return this.textBox1.Text;
        }
    }
}
public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        get
        {
            return textBox1;
        }
    }
}
UserControl2
中:

 public partial class UserControlB: UserControl
{
    public UserControlB()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //here is to get textbox1.text
    }
}
public partial class UserControl2 : UserControl
{
    private TextBox txt = null;
    public UserControl2()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        set
        {
            txt = value;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (txt != null)
            MessageBox.Show(txt.Text);
    }
}

我该怎么办?

一个选项是将UserControlA实例传递给UserControlB的构造函数

public partial class UserControlB: UserControl
{
    UserControlA userControlA;

    public UserControlB(UserControlA ucA)
    {
        userControlA = ucA;
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string myString = userControlA.TexBoxText;
    }
}

一个选项是将UserControlA实例传递给UserControlB的构造函数

public partial class UserControlB: UserControl
{
    UserControlA userControlA;

    public UserControlB(UserControlA ucA)
    {
        userControlA = ucA;
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string myString = userControlA.TexBoxText;
    }
}

UserControl1
中:

 public partial class UserControlA: UserControl
{
    public UserControlA()
    {
        InitializeComponent();
    }

    public string TexBoxText
    {
        get
        {
            return this.textBox1.Text;
        }
    }
}
public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        get
        {
            return textBox1;
        }
    }
}
UserControl2
中:

 public partial class UserControlB: UserControl
{
    public UserControlB()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //here is to get textbox1.text
    }
}
public partial class UserControl2 : UserControl
{
    private TextBox txt = null;
    public UserControl2()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        set
        {
            txt = value;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (txt != null)
            MessageBox.Show(txt.Text);
    }
}
在上述控件的容器中:

uc2.TextBox = uc1.TextBox;

UserControl1
中:

 public partial class UserControlA: UserControl
{
    public UserControlA()
    {
        InitializeComponent();
    }

    public string TexBoxText
    {
        get
        {
            return this.textBox1.Text;
        }
    }
}
public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        get
        {
            return textBox1;
        }
    }
}
UserControl2
中:

 public partial class UserControlB: UserControl
{
    public UserControlB()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //here is to get textbox1.text
    }
}
public partial class UserControl2 : UserControl
{
    private TextBox txt = null;
    public UserControl2()
    {
        InitializeComponent();
    }
    public TextBox TextBox
    {
        set
        {
            txt = value;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (txt != null)
            MessageBox.Show(txt.Text);
    }
}
在上述控件的容器中:

uc2.TextBox = uc1.TextBox;


您是否公开了
UserControlA
属性以获取
TextBox1
Text
TextBox1
无法从外部访问,因此您需要在
UserControlA
上创建函数或属性,才能从
UserControlB
访问它。UserControl1需要引用UserControl2,或者通过创建
TextBoxText
属性来获取的
Text
TextBox1
matcheek,以何种方式创建对
UserControl1
的引用?您是否公开了
UserControlA
属性以获取
TextBox1
Text
TextBox1
无法从外部访问,因此您需要在
UserControlA
上创建函数或属性,才能从
UserControlB
访问它。UserControl1需要引用UserControl2,或者通过创建
TextBoxText
属性来获取的
Text
TextBox1
matcheek,在
UserControlA-UserControlA行中创建对
UserControl1
的引用的方法发生错误,我在
UserControlB
中找不到
UserControlA
@tuanguyen:你有什么错误?希望两个UserControls在同一个命名空间中?两个UserControls不在同一个命名空间中,我创建了
Windows窗体控件库
来创建两个
用户控件
@tuanguyen:然后你必须导入命名空间,即:使用xxx.xxx.UserControlA;你的意思是我必须在第
UserControlA-UserControlA行中添加对UserControlB的引用发生错误,我在
UserControlB
中找不到
UserControlA
@tuanguyen:你有什么错误?希望两个UserControls在同一个命名空间中?两个UserControls不在同一个命名空间中,我创建了
Windows窗体控件库
来创建两个
用户控件
@tuanguyen:然后你必须导入命名空间,即:使用xxx.xxx.UserControlA;你的意思是我必须添加对UserControlB的引用??