在UserControls之间传递CheckBox值

时间:2017-03-26 18:16:26

标签: c# .net winforms

我正在尝试将CheckBox值从UserControl3传递给UserControl1

在UserControl3上

public void materialCheckBox1_CheckedChanged(object sender, EventArgs e)
{

    if (materialCheckBox1.Checked)
    {
        Environment.Exit(0)
    }
    else
    {
        //Nothing
    }


}

如何将值添加到UserControl1?

例如,单击UserControl1时的按钮将检查UserControl3上是否选中了复选框。

2 个答案:

答案 0 :(得分:1)

控件之间的通信有多种解决方案。

您已在BindingNavigatorBindingource等控件之间的互动中看到此类功能,其中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)删除表单上的UserControl1UserControl2并使用设计器(或在运行时)将UserControl2的实例分配给UserControl2Instance UserControl1属性Button1 1}}。然后,当您运行该程序并点击UserControl1的{​​{1}}时,您可以看到位于checkBox1的{​​{1}}的值。

答案 1 :(得分:0)

与代表合作!

要详细了解该点击here!有关更多信息,请查看此msdn article