从“控件”类型获取数据以存储各种其他控件(CheckBox / TextBox / NumericUpDown等)

时间:2015-09-22 01:24:23

标签: c# winforms

我有一个包含几个字符串和一般控件的类型。我的问题是我不知道如何访问存储在控件中的数据。

基本上我的程序循环遍历一些“自定义类型”,它们具有_control“Children”,然后分配给New CheckBox或其他表单控件。

private Control _control { get; set; }
public void set_control(Control control) { this._control = control; }

其他地方

x.set_control(new CheckBox
                  {
                    Dock = DockStyle.Fill,
                    AutoSize = false,
                    Text = x.name(),
                    Checked = Convert.ToBoolean(x.data())
                  });
x.control().Click += delegate { refresh_data(x); };

伪代码

private void refresh_data(embedded_setting setting)
{
  if (setting.control().GetType() == typeof(CheckBox))
  {
    setting.set_data(setting.control());
  }
}

我需要将set_data设置为control.checked.tostring。但我不确定如何使用控件类型,就好像它是一个复选框类型。

我希望它可以继续用于TextBox.Text和NumericUpDown.Value。

2 个答案:

答案 0 :(得分:0)

要检查您的控件是否为复选框,您可以使用 来验证它。

 if(controlVariable is CheckBox)
 {
     var checkBox = controlVariable as Checkbox;    
      // then you can use checkBox variable to access it's properties.
 }

答案 1 :(得分:0)

我不确定这是否是您正在寻找的,但在检查后:

control.getType() == typeof(CheckBox)

您可以将控件转换为如下所示的复选框:

((CheckBox)control).Checked