C# 在用户控件之间传递复选框值
我正在尝试将复选框值从UserControl3传递给UserControl1 关于UserControl3C# 在用户控件之间传递复选框值,c#,.net,winforms,C#,.net,Winforms,我正在尝试将复选框值从UserControl3传递给UserControl1 关于UserControl3 public void materialCheckBox1_CheckedChanged(object sender, EventArgs e) { if (materialCheckBox1.Checked) { Environment.Exit(0) } else { //Nothing } } 如
public void materialCheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (materialCheckBox1.Checked)
{
Environment.Exit(0)
}
else
{
//Nothing
}
}
如何将该值添加到UserControl1
例如,单击UserControl1上的按钮将检查UserControl3上是否选中了复选框。与代表一起工作
要阅读更多关于该点击!有关更多信息,请查看此msdn。控件之间的通信有多种解决方案
您已经在控件之间的交互中看到了此类功能,如
BindingNavigator
和BindingSource
,其中BindingNavigator
具有类型为BindingSource
的属性,每次单击导航按钮,BindingNavigator
调用BindingSource
的方法
为了自己实现它,例如,在UserControl2
中,您可以创建一个公共属性,公开您希望UserControl1
能够检查的信息,然后在UserControl1
中,您应该有一个UserControl2
类型的属性。这样,当您在设计时或运行时将UserControl2
的实例分配给属性时,就可以使用公开的信息
例如,请遵循以下步骤:
1) 在您的UserControl2
中,公开您需要在无法控制的情况下使用的信息
public bool CheckBoxValue
{
get { return checkBox1.Checked; }
set { checkBox1.Checked = value; }
}
2) 在UserControl1
中,创建类型为UserControl2
的属性。因此,您可以使用分配给它的实例,并找到CheckBoxValue
属性的值
public UserControl2 UserControl2Instance { get; set; }
private void button1_Click(object sender, EventArgs e)
{
if(UserControl2Instance!=null)
{
if(UserControl2Instance.CheckBoxValue)
MessageBox.Show("Checked");
else
MessageBox.Show("Unchecked");
}
}
3) 将
UserControl1
和UserControl2
都放到表单上,并使用设计器(或在运行时)将UserControl2
的实例分配给UserControl1
的UserControl2Instance
属性。然后,当您运行程序并单击您的UserControl1
的按钮1
时,您可以看到checkBox1
的值,该值位于UserControl2
中您先前在中回答的类似问题。为什么不试试建议的解决方案呢?那就是文本框对文本框。这确实适用于这个问题。但是这是如何转化为布尔值的。同样,该解决方案不适用于表单(非parent)到用户控件。您是否见过BindingNavigator
如何与BindingSource
结合使用?尝试使用这样的解决方案。您已经在控件之间的交互中看到了这样的功能,例如BindingNavigator
和BindingSource
,其中BindingNavigator
具有类型为BindingSource
的属性,每次单击导航按钮,BindingNavigator
调用BindingSource
的方法。