我正在尝试将CheckBox值从UserControl3传递给UserControl1
在UserControl3上
public void materialCheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (materialCheckBox1.Checked)
{
Environment.Exit(0)
}
else
{
//Nothing
}
}
如何将值添加到UserControl1?
例如,单击UserControl1时的按钮将检查UserControl3上是否选中了复选框。
答案 0 :(得分:1)
控件之间的通信有多种解决方案。
您已在BindingNavigator
和Bindingource
等控件之间的互动中看到此类功能,其中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
的实例分配给UserControl2Instance
UserControl1
属性Button1
1}}。然后,当您运行该程序并点击UserControl1
的{{1}}时,您可以看到位于checkBox1
的{{1}}的值。
答案 1 :(得分:0)