Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#从一个表单到另一个表单获取复选框值_C#_Forms_Checkbox - Fatal编程技术网

C#从一个表单到另一个表单获取复选框值

C#从一个表单到另一个表单获取复选框值,c#,forms,checkbox,C#,Forms,Checkbox,经过几个小时的困惑,我想我已经错过了这里显而易见的东西。我相信这并不难。我有一个表单(CommTester),上面有一个复选框。在同一个表单上,我有一个ToolStrip,其中的一项将启动另一个表单(SetPrintGoDelay)。此表单需要知道是否选中了表单1上的复选框。下面的代码片段显示了我如何获取CommTester表单并将其发送到SetPrintGoDelay表单。(所有代码都有大量的裁剪,以使其更容易适应,如果您认为我遗漏了重要的一点,请询问) 现在以SetPrintGoDelay的

经过几个小时的困惑,我想我已经错过了这里显而易见的东西。我相信这并不难。我有一个表单(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
    }
 }