代码之家  ›  专栏  ›  技术社区  ›  Simos Sigma

在自定义窗体上添加designerverb

  •  2
  • Simos Sigma  · 技术社区  · 7 年前

    可以加上吗 DesignerVerbs 在一 自定义窗体 自定义设计器类 为了我 自定义窗体类 像这样使用…

    <Designer(GetType(CustomDesigner))>
    Public Class CustomForm
        Inherits Form
        '...
    End Class
    

    我也试着把所有的工作 自定义窗体的类 这样地。。。

    Imports System.ComponentModel.Design
    
    Public Class CustomForm
        Inherits Form
        '...
        Private _Verbs As DesignerVerbCollection
        Public ReadOnly Property Verbs() As DesignerVerbCollection
            Get
                If _Verbs Is Nothing Then
                    _Verbs = New DesignerVerbCollection From {
                    New DesignerVerb("Verb1", New EventHandler(AddressOf EventHandler1)),
                    New DesignerVerb("Verb2", New EventHandler(AddressOf EventHandler2))
                    }
                    _Verbs(0).Visible = False
                    _Verbs(1).Visible = True
                End If
                Return _Verbs
            End Get
        End Property
        Private Sub EventHandler1(ByVal sender As Object, ByVal e As EventArgs)
            '...
        End Sub
        Private Sub EventHandler2(ByVal sender As Object, ByVal e As EventArgs)
            '...
        End Sub
    End Class
    

    但没有运气。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Reza Aghaei    7 年前

    如果要将一些自定义谓词添加到 Form ,您需要创建一个新的自定义 Designer 源于 DocumentDesigner 并重写许多属性和方法来重新创建 FormDesigner

    作为一个简单的解决方案,您可以调整窗体的基本窗体的设计器。比如说,你有 Form1 你想拥有 Do Something 它的动词。这样做,如果 BaseForm 是您的基本表单 形式1 ,只需将以下代码添加到 基本形状 :

    //You may want to add null checking to the code.
    
    protected override void OnHandleCreated(EventArgs e)
    {
        base.OnHandleCreated(e);
        if (!DesignMode)
            return;
        var host = (IDesignerHost)this.Site.GetService(typeof(IDesignerHost));
        var designer = host.GetDesigner(this);
        designer.Verbs.Add(new DesignerVerb("Do Something", (obj, args) =>
        {
            MessageBox.Show("Something done!");
        }));
    }
    

    因此, 做点什么 将添加到您的上下文菜单 形式1 :

    enter image description here

    如果你想更努力的话,你可以在这里找到 FormDocumentDesigner 它是从 DocumentDesigner .