我刚刚制作了两个表单,我有两个复选框,我希望它们彼此复制(如果选中了Form1中的checkBox,则选中了Form2中的checkBox) 我没有此代码,但是我可以给我我的Form1名称和Form2名称 表格1:MainUI Form2:设置
答案 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;
}
我建议您不要在没有进行任何修改的情况下使用它来双向发送。否则,您将陷入无限循环,从而在两种形式之间来回触发事件。只需沿一个方向使用它就可以了。