我使用一些属性(Control
,ForeColor
)发起BackColor
。
我会将Control
视为另一个控件(TextBox
,RichTextBox
),因此我不必为不同的控件重复相同的属性。
当我尝试进一步向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