【问题标题】:Storing Controls in a variable将控件存储在变量中
【发布时间】:2011-12-10 16:18:43
【问题描述】:

我想在不知道其类型的情况下将通用控件存储在变量中。通过我需要访问一些常见属性,例如名称、大小、位置...我只想存储单选按钮、标签、图片框...谁能告诉我如何做到这一点?

【问题讨论】:

  • 想办法设置 Control 的属性。

标签: c# class controls


【解决方案1】:

是的,您可以使用List<Control> myControls = new List<Control>(); 而 Control 是每个 WinForm Control 的基类,您可以访问 Name 等属性。

myControls.add(pictureBox1);
myControls.add(textBox1);

您也可以通过执行将 Cast 向后退到 Control

if(myControls[0] is TextBox)
    TextBox txtbx1 = (TextBox)(myControls[0]);

【讨论】:

    【解决方案2】:

    如果你说的是 Winform,它们都是从 Control 派生的,所以只需像这样制作一个 Control 列表:

    public List<Control> MyControls;
    

    【讨论】:

      【解决方案3】:

      控件继承自base class Control,它具有您提到的所有属性。您可以键入控件集合以包含 Control

      【讨论】:

        【解决方案4】:

        将变量声明为所有控件继承自的类型列表,我相信它是Control。然后,您可以访问由 Control 类声明的所有成员(包括属性)。

        var MyControls = new List<Control>();
        MyControls.Add(MyPicBox);
        MyControls.Add(MyRadioButton);
        

        【讨论】:

          【解决方案5】:

          你可以这样做:

          List<Control> myControls = new List<Control>();
          myControls.Add(new Label());
          myControls.Add(new Button());
          myControls.Add(new PictureBox());
          
          foreach (var myControl in myControls)
          {
               myControl.Name = "New Name";
               myControl.Size = new Size(100, 200);
               myControl.Location = new Point(100, 100);
          }
          

          【讨论】:

            【解决方案6】:

            声明一个基类类型的变量。作为基类类型变量可以保存子类的实例。

            例如在 WPF 中你可以做List&lt;System.Windows.Controls.Control&gt;

            对于 Win Forms,您可以使用 List&lt;System.Windows.Forms.Control&gt;

            【讨论】:

              猜你喜欢
              • 2021-06-22
              • 2016-05-01
              • 2011-08-20
              • 1970-01-01
              • 2013-04-18
              • 2017-04-04
              • 2013-01-31
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多