如何访问其他表单上的复选框?

时间:2018-09-08 09:22:16

标签: c# winforms

我刚刚制作了两个表单,我有两个复选框,我希望它们彼此复制(如果选中了Form1中的checkBox,则选中了Form2中的checkBox) 我没有此代码,但是我可以给我我的Form1名称和Form2名称 表格1:MainUI Form2:设置

1 个答案:

答案 0 :(得分:0)

您需要从一种形式触发事件,然后在另一种形式上处理事件。

您将需要一个事件args类来携带复选框的状态:

public class CheckEventArgs : EventArgs
{
    public bool Checked { get; set; }
}

然后在将要发送其检查状态的表单上,您将需要一个事件(假设“设置”表单会将其复选框状态发送到MainUI表单),因此设置将需要添加以下内容:

public event EventHandler<CheckEventArgs> CheckboxChanged;

在复选框的CheckedChanged事件上,您将触发该事件:

public void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    CheckboxChanged?.Invoke(this, new CheckEventArgs() { Checked = checkBox1.Checked });
}

在您要从中接收结果的表单上,需要处理该事件(此代码在MainUI上进行):

public Form1()
{
    InitializeComponent();

    Form2 Settings = new Form2();
    Settings.CheckboxChanged += settings_CheckboxChanged;
}

public void settings_CheckboxChanged(object sender, CheckEventArgs e)
{
    checkBox1.Checked = e.Checked;
}

我建议您不要在没有进行任何修改的情况下使用它来双向发送。否则,您将陷入无限循环,从而在两种形式之间来回触发事件。只需沿一个方向使用它就可以了。