我有一个这样定义的自定义表单:
internal class DropDownForm : System.Windows.Forms.Form
{
public DropDownForm(bool needShadow)
{ ... }
}
我需要根据在重写的 CreateParams 成员中传递给表单构造函数的 needShadow 参数来启用表单阴影 - 如下所示:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
if (needShadow)
cp.ClassStyle |= CS_DROPSHADOW;
return cp;
}
}
问题是我无法访问needShadow
传递给this中的表单构造函数CreateParams
的参数。该CreateParams
成员在我的自定义表单构造函数中的第一条语句之前执行,并且我无法将传递给表单构造函数的值缓存在表单字段中以便稍后在.needShadow
CreateParams
为了解决这个问题,我可以把这个needShadow
参数变成我表单的静态属性,在创建表单之前设置它,然后在覆盖的CreateParams
. 但显然这不是一个好方法,因为我的应用程序可以创建这种表单的多个实例,每个实例都有自己的needShadow
值。
WinForms .NET 中是否有针对此问题的巧妙解决方案?