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的引用??