【问题标题】:How to get the IsChecked property of a WinForm control?如何获取 WinForm 控件的 IsChecked 属性?
【发布时间】:2011-07-29 17:32:59
【问题描述】:

找不到一个看似简单的问题的答案。我需要遍历窗体上的控件,如果控件是 CheckBox,并且被选中,则应该执行某些操作。像这样的

foreach (Control c in this.Controls)
        {
            if (c is CheckBox)
            {
                if (c.IsChecked == true)
                    // do something
            }
        }

但我无法访问 IsChecked 属性。

错误是“System.Windows.Forms.Control”不包含“IsChecked”的定义,并且找不到接受“System.Windows.Forms.Control”类型的第一个参数的扩展方法“IsChecked”(您是否缺少 using 指令或程序集引用?)

我怎样才能到达这家酒店?提前非常感谢!

编辑

好的,回答所有问题 - 我尝试投射,但不起作用。

【问题讨论】:

    标签: c# winforms controls ischecked


    【解决方案1】:

    你已经接近了。你要找的房产是Checked

    foreach (Control c in this.Controls) {             
       if (c is CheckBox) {
          if (((CheckBox)c).Checked == true) 
             // do something             
          } 
    } 
    

    【讨论】:

      【解决方案2】:

      您需要将其转换为复选框。

      foreach (Control c in this.Controls)
              {
                  if (c is CheckBox)
                  {
                      if ((c as CheckBox).IsChecked == true)
                          // do something
                  }
              }
      

      【讨论】:

      • 不妨使用安全强制转换并检查是否为空。
      • 不,您的代码与 Anuraj 在此处发布的代码不同。你从不表演演员表。
      • 不,但我尝试过这种方式。请参阅上面 Jay Riggs 关于正确投射方式的回答。
      【解决方案3】:

      您必须从 Control 向 CheckBox 添加转换:

      foreach (Control c in this.Controls)
              {
                  if (c is CheckBox)
                  {
                      if ((c as CheckBox).IsChecked == true)
                          // do something
                  }
              }
      

      【讨论】:

        【解决方案4】:

        您需要强制转换控件:

            foreach (Control c in this.Controls)
            {
                if (c is CheckBox)
                {
                    if (((CheckBox)c).IsChecked == true)
                        // do something
                }
            }
        

        【讨论】:

          【解决方案5】:

          Control 类没有定义IsChecked 属性,因此您需要先将其转换为适当的类型:

          var checkbox = c as CheckBox;
          if( checkbox != null )
          {
              // 'c' is a CheckBox
              checkbox.IsChecked = ...;
          }
          

          【讨论】:

          • 你的意思是 checkbox 而不是 c
          • 只对错误答案进行报复。 Control 确实没有定义IsChecked 属性,但 CheckBox 也没有。
          • 当我看到 IsChecked 以及 OP 的示例使用 CheckBox 和 IsChecked 属性这一事实时,我假设 WPF,但你是对的;它被标记为 WinForms。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-11
          相关资源
          最近更新 更多