gpt4 book ai didi

c# - 在表单之间传递数据

转载 作者:行者123 更新时间:2023-11-30 19:31:16 25 4
gpt4 key购买 nike

我的项目中有 3 个 winform,在 Form3 上有一个复选框。我想要做的是单击此复选框,然后在退出表单时对 Form1 中的复选框进行相同的检查(无论是否选中)。我现有的代码如下,但它不起作用,我是不是在某处遗漏了一个技巧?谢谢。

//Form3

Form1 setDateBox = new Form1();
setDateBox.setNoDate(checkBox1.Checked);

//Form1

public void setNoDate(bool isChecked)
{
checkBox1.Checked = isChecked;
}

最佳答案

一些方法:

1 - 将 Form1 变量“setDateBox”存储为 Form3 的类成员,然后从复选框 CheckedChanged 事件处理程序访问“setNoDate”方法:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
setDateBox.setNoDate(checkBox1.Checked);
}

2 - 如果您不想将 setDateBox 存储为类成员或者您需要更新多个表单,您可以在 Form3 中定义一个事件,如下所示:

public event EventHandler<CheckedChangedEventArgs> CheckBox1CheckedChanged;

...

public class CheckedChangedEventArgs : EventArgs
{
public bool CheckedState { get; set; }

public CheckedChangedEventArgs(bool state)
{
CheckedState = state;
}
}

为 Form1 中的事件创建一个处理程序:

public void Form1_CheckBox1CheckedChanged(object sender, CheckedChangedEventArgs e)
{
//Do something with the CheckedState
MessageBox.Show(e.CheckedState.ToString());
}

创建表单后分配事件处理程序:

Form1 setDateBox = new Form1();
CheckBox1CheckedChanged += new EventHandler<CheckedChangedEventArgs>(setDateBox.Form1_CheckBox1CheckedChanged);

然后从 Form3 触发事件(当复选框的选中状态发生变化时):

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if(CheckBox1CheckedChanged != null)
CheckBox1CheckedChanged(this, new CheckedChangedEventArgs(checkBox1.Checked));
}

希望这对您有所帮助。

关于c# - 在表单之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com