进一步向控件添加属性,将其视为另一个控件

时间:2016-11-06 00:05:27

标签: c# winforms

我使用一些属性(ControlForeColor)发起BackColor

我会将Control视为另一个控件(TextBoxRichTextBox),因此我不必为不同的控件重复相同的属性。

当我尝试进一步向c添加属性时,它会显示{"Object reference not set to an instance of an object."}

我使用as错了吗?

 private Control ConvertToType(string type)
    {
        // create instance and set style
        Control control = new Control();
        control.BackColor = Color.FromArgb(20, 20, 20);
        control.ForeColor = Color.White;

        if (type == "TextBox")
        {
            TextBox c = control as TextBox;
            c.Size = new Size(211, 20); // {"Object reference not set to an instance of an object."}
            return c;
        }
        if (type == "RichTextBox")
        {
            RichTextBox c = control as RichTextBox;
            c.Size = new Size(211, 40);
            c.AcceptsTab = true;
            return c;
        }
        if (type == "Username")
        {
            TextBox c = control as TextBox;
            c.Size = new Size(211, 20);
            c.Enabled = false;
            //c.Text = loggedInUser;
            return c;
        }

        return null;
    }

答案

as用于检查对象是否为指定类型,如果对象不是,则返回null,如果是指定类型,则将对象视为该类型。

所以是的,我正在使用as错误的

解决方案

制作包含一些属性的控件

public static TextBox FunctionName()
  {
      TextBox c = new TextBox();
      // set properties to c
      return c;
   }

control =从FunctionName()返回的控件

TextBox x = FunctionName();
// add more properties or change existing properties

0 个答案:

没有答案