我有一个继承自 System.Windows.Forms.Button 的自定义控件。
我有一个名为 Enabled 和 DelegateProperty 的属性。
public class Button : System.Windows.Forms.Button
{
public bool DelegateProperty { get; set; }
public new bool Enabled
{
get { return base.Enabled; }
set
{
if (DelegateProperty)
{
MethodInvoker action = delegate
{
base.Enabled = value;
};
this.BeginInvoke(action);
}
else
base.Enabled = value;
}
}
}
当我在该控件中将 DelegateProperty 设置为 true 时,它在设计时给了我这个错误。
“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”
我在设计时尝试避免使用 MethodInvoker
bool isInDesignMode = LicenseManager.UsageMode == LicenseUsageMode.Designtime || Debugger.IsAttached == true;
但是,我仍然在设计时收到此错误。
如何避免在设计时运行 BeginInvode 方法?