C#从一个表单到另一个表单获取复选框值
经过几个小时的困惑,我想我已经错过了这里显而易见的东西。我相信这并不难。我有一个表单(CommTester),上面有一个复选框。在同一个表单上,我有一个ToolStrip,其中的一项将启动另一个表单(SetPrintGoDelay)。此表单需要知道是否选中了表单1上的复选框。下面的代码片段显示了我如何获取CommTester表单并将其发送到SetPrintGoDelay表单。(所有代码都有大量的裁剪,以使其更容易适应,如果您认为我遗漏了重要的一点,请询问) 现在以SetPrintGoDelay的形式C#从一个表单到另一个表单获取复选框值,c#,forms,checkbox,C#,Forms,Checkbox,经过几个小时的困惑,我想我已经错过了这里显而易见的东西。我相信这并不难。我有一个表单(CommTester),上面有一个复选框。在同一个表单上,我有一个ToolStrip,其中的一项将启动另一个表单(SetPrintGoDelay)。此表单需要知道是否选中了表单1上的复选框。下面的代码片段显示了我如何获取CommTester表单并将其发送到SetPrintGoDelay表单。(所有代码都有大量的裁剪,以使其更容易适应,如果您认为我遗漏了重要的一点,请询问) 现在以SetPrintGoDelay的
namespace comms_test
{
public partial class SetPrintGoDelay : Form
{
CommTester main;
public SetPrintGoDelay(CommTester incomingform)
{
InitializeComponent();
main = incomingform;
MessageBox.Show(main.checkboxchecked().ToString());
}
private void btn_setprintgodelay_Click(object sender, EventArgs e)
{
if (main.checkboxchecked().ToString() == "1")
{
CommTester frm1 = new CommTester();
frm1.log_data(DataToLog); //go and log the data
}
}
因此,在CommTester表单上,我勾选了复选框,并将其记录数据,但一旦完成,复选框值设置为0,即使仍被选中,也不会再次将其作为1拾取。我想我们可能已经处理了它,我似乎无法再次获得价值。正如我所说,经过数小时的尝试,我显然错过了显而易见的事情。如果有更简单的方法从一个表单到另一个表单获取复选框的值,请让我知道。表单将不会被处理(除非您在忽略的代码中的其他地方这样做),因为您保留了SetPrintGoDelay中的引用。我建议使用布尔属性,而不是传递“0”或“1”字符串来指示是否选中复选框。如果没有别的,这将澄清正在发生的事情 如果进行这些更改,会发生什么情况 在CommTester中:
public bool IsCheckboxChecked
{
get { return chkbx_log.Checked; }
}
在SetPrintGoDelay中:
private void btn_setprintgodelay_Click(object sender, EventArgs e)
{
if (main.IsCheckboxChecked)
{
CommTester frm1 = new CommTester();
frm1.log_data(DataToLog); //go and log the data
}
}
private void btn_setprintgodelay_Click(object sender, EventArgs e)
{
if (main.IsCheckboxChecked)
{
CommTester frm1 = new CommTester();
frm1.log_data(DataToLog); //go and log the data
}
}