Windows窗体自定义设计属性

| 这个问题困扰我很多年了。 我们在项目中使用派生的Windows Forms组件和控件。例如,我们派生自Button,UserControl等。 我们的派生按钮具有一些自定义属性。例如,它具有一个名为Severity的枚举属性。此属性的设置器查看枚举值,并在基本Button上设置一些内容,如文本颜色和边框。 效果很好...但是我们的用户控件将其放置在设计器上,并在“属性”窗口中设置了严重性的值,最终实际上将严重性属性在设置器中执行的代码写入用户控件的按钮本身。 我们不希望...违背了拥有共享的Severity属性的目的,因为我们无法再更改Severity的实现,并且它也不会全局应用更改,因为用户控件自己设置了Severity属性以及将其拖动到控件上时包含的代码... 我尝试添加诸如DesignerSerializationVisiblity之类的属性,但这似乎从未达到预期的效果。 如何防止Windows窗体设计器在Severity属性的实现内部生成代码? 谢谢。     
已邀请:
        我在WinForms中遇到了类似的问题,其中表单在设计器中运行代码。为了解决这个问题,我创建了一个静态方法,该方法检查Visual Studio是否是宿主进程,并将其包装在设计人员应忽略的代码周围。 VB.Net
Imports System.Diagnostics

Public Shared Function IsVisualStudioHostProcess() As Boolean
    Return (Process.GetCurrentProcess().ProcessName.ToUpper() = \"DEVENV\")
End Function

Public Sub MethodName()
    If Not (IsVisualStudioHostProcess()) Then
        \' Code here
    End If
End Sub
C#
Using System.Diagnostics;

public static bool IsVisualStudioHostProcess()
{
    return (Process.GetCurrentProcess().ProcessName.ToUpper() == \"DEVENV\");
}

public void MethodName()
{
    if (!IsVisualStudioHostProcess())
    {
        // Code Here
    }
}
    

要回复问题请先登录注册