试图在循环中省略一个复选框控件

时间:2014-07-17 21:48:26

标签: c# controls

我有一个utitility类,它有一个静态方法,它将控制对象作为参数。类/方法的原因是为下一个新游戏清除/重置应用程序的形式。

我为所有不同的控件做了很多东西,对于复选框控件,我删除了复选标记。有一个我不想触摸的复选框(如果是的话,请将其保留)。我有它工作,不知怎的,我记不起来了,这可能很简单。

当前代码:

// Called when a new game is started.  Clears all checkmarks in all checkbox controls

if (control is CheckBox)
{
   CheckBox checkBox = (CheckBox)control;
   checkBox.Checked = false;
}

测试代码:

// Called when a new game is started.  Clears all checkmarks in all checkbox controls

if (control is CheckBox)
{
   if (control is form.checkBoxWarning)
   {
      continue;
   }

   CheckBox checkBox = (CheckBox)control;
   checkBox.Checked = false;
}

'form'被传递给这个静态类:

public static void ResetAllControls(Control form)

但我仍然无法想象如何将该控制带入上下文。我正在尝试的控件名称是checkBoxWarning

1 个答案:

答案 0 :(得分:1)

你可能想要的是:

if (control is CheckBox)
{
    if (control.Name == "checkBoxWarning")
    {
         continue;
    }
    CheckBox checkBox = (CheckBox)control;
    checkBox.Checked = false;
}     

但是,更好的方法是使用Tag属性。在任何您不想触摸的复选框上将其设置为false,然后使用此代码:

if (control is CheckBox)
{
    if (control.Tag != null && ((bool)control.Tag) == false)
    {
        continue;
    }
    CheckBox checkBox = (CheckBox)control;
    checkBox.Checked = false;
}

这样做可以让您无需更改多个复选框,也无需再次触摸类代码。