Designer: Fehler beim erstellen einer Komponente

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Eddy.

    Designer: Fehler beim erstellen einer Komponente

    Hi,

    ich habe mir ein Control gemacht, alle Klassen davon habe ich in ein bestehendes Projekt importiert, aber wenn ich das Control auf ein Form machen moechte, bekommen ich eine Fehlermeldung. Was kann dafuer die Ursache sein? Wenn ich ein neues Projekt anlege, geht alles gut. Ist die Projektmappe irgendwie zerschossen?

    VB.NET-Quellcode

    1. Imports System.ComponentModel.Design
    2. Imports System.Windows.Forms.Design
    3. Imports System.ComponentModel
    4. Public Class EqualizerDesigner
    5. Inherits ParentControlDesigner
    6. Private ReadOnly Property HostControl() As EqualizerControl
    7. Get
    8. Return DirectCast(Control, EqualizerControl)
    9. End Get
    10. End Property
    11. Public Sub New()
    12. MyBase.New()
    13. _DesignerVerbCollection.Add(New DesignerVerb("Slider hinzufuegen", AddressOf OnAddSlider))
    14. '_DesignerVerbCollection.AddRange({New DesignerVerb("Slider hinzufuegen", AddressOf OnAddSlider), New DesignerVerb("Slider entfernen", AddressOf OnRemoveSlider)})
    15. End Sub
    16. Protected Overrides Sub OnPaintAdornments(ByVal pe As System.Windows.Forms.PaintEventArgs)
    17. MyBase.OnPaintAdornments(pe)
    18. Dim dashedPen As New Pen(Color.Gray)
    19. Dim borderRectangle As Rectangle = Control.ClientRectangle
    20. borderRectangle.Width -= 1
    21. borderRectangle.Height -= 1
    22. dashedPen.DashStyle = Drawing2D.DashStyle.Dash
    23. pe.Graphics.DrawRectangle(dashedPen, borderRectangle)
    24. dashedPen.Dispose()
    25. End Sub
    26. Private _DesignerVerbCollection As New DesignerVerbCollection
    27. Public Overrides ReadOnly Property Verbs() As DesignerVerbCollection
    28. Get
    29. If _DesignerVerbCollection.Count = 2 Then
    30. If HostControl.Sliders.Count > 0 Then
    31. _DesignerVerbCollection(1).Enabled = True
    32. Else
    33. _DesignerVerbCollection(1).Enabled = False
    34. End If
    35. End If
    36. Return _DesignerVerbCollection
    37. End Get
    38. End Property
    39. Private _IDesignerHost As IDesignerHost
    40. Public ReadOnly Property DesignerHost() As IDesignerHost
    41. Get
    42. If _IDesignerHost Is Nothing Then
    43. _IDesignerHost = DirectCast(GetService(GetType(IDesignerHost)), IDesignerHost)
    44. End If
    45. Return _IDesignerHost
    46. End Get
    47. End Property
    48. Private _ISelectionService As ISelectionService
    49. Public ReadOnly Property SelectionService() As ISelectionService
    50. Get
    51. If _ISelectionService Is Nothing Then
    52. _ISelectionService = DirectCast(GetService(GetType(ISelectionService)), ISelectionService)
    53. End If
    54. Return _ISelectionService
    55. End Get
    56. End Property
    57. Private Sub OnAddSlider(ByVal sender As Object, ByVal e As EventArgs)
    58. Dim ctrls As Control.ControlCollection = HostControl.Controls
    59. RaiseComponentChanging(TypeDescriptor.GetProperties(HostControl)("Sliders"))
    60. Dim sl As Slider = DirectCast(DesignerHost.CreateComponent(GetType(Slider)), Slider)
    61. HostControl.Sliders.Add(sl)
    62. sl.Location = New Point(ctrls.Count * 20, 0)
    63. sl.Range = HostControl.Range
    64. sl.ForeColor = HostControl.ForeColor
    65. RaiseComponentChanged(TypeDescriptor.GetProperties(HostControl)("Sliders"), ctrls, HostControl.Sliders)
    66. HostControl.SelectedSlider = sl
    67. AddHandler sl.ValueChanged, AddressOf HostControl.Sliders_ValueChanged
    68. SetVerbs()
    69. End Sub
    70. Private Sub OnRemoveSlider(ByVal sender As Object, ByVal e As EventArgs)
    71. Dim ctrls As Control.ControlCollection = HostControl.Controls
    72. If HostControl.SelectedIndex < 0 Then
    73. Return
    74. End If
    75. RaiseComponentChanging(TypeDescriptor.GetProperties(HostControl)("Slider"))
    76. DesignerHost.DestroyComponent(CType(HostControl.Sliders(HostControl.SelectedIndex), Slider))
    77. RaiseComponentChanged(TypeDescriptor.GetProperties(HostControl)("Sliders"), ctrls, HostControl.sliders)
    78. SelectionService.SetSelectedComponents(New IComponent() {HostControl}, SelectionTypes.Auto)
    79. SetVerbs()
    80. End Sub
    81. Private Sub SetVerbs()
    82. Select Case HostControl.Sliders.Count
    83. Case 0
    84. Verbs(1).Enabled = False
    85. Case 1
    86. Verbs(1).Enabled = True
    87. End Select
    88. End Sub
    89. Protected Overrides Sub PostFilterProperties(ByVal properties As IDictionary)
    90. properties.Remove("Text")
    91. MyBase.PostFilterProperties(properties)
    92. End Sub
    93. Public Overrides Sub OnSetComponentDefaults()
    94. HostControl.Sliders.Add(DirectCast(DesignerHost.CreateComponent(GetType(Slider)), Slider))
    95. HostControl.Sliders.Add(DirectCast(DesignerHost.CreateComponent(GetType(Slider)), Slider))
    96. Dim equalizer As EqualizerControl = DirectCast(Control, EqualizerControl)
    97. equalizer.Sliders(0).Location = New Point(20, 0)
    98. equalizer.Sliders(0).ForeColor = HostControl.ForeColor
    99. DirectCast(equalizer.Sliders(0), Slider).Range = Ranges._0To10
    100. equalizer.Sliders(1).Location = New Point(40, 0)
    101. equalizer.Sliders(1).ForeColor = HostControl.ForeColor
    102. DirectCast(equalizer.Sliders(1), Slider).Range = Ranges._0To10
    103. HostControl.SelectedIndex = 0
    104. End Sub
    105. Public Overrides ReadOnly Property SelectionRules() As SelectionRules
    106. Get
    107. Dim rules As SelectionRules = MyBase.SelectionRules
    108. rules = SelectionRules.Moveable Or SelectionRules.Visible Or SelectionRules.None
    109. Return rules
    110. End Get
    111. End Property
    112. End Class
    Bilder
    • Unbenannt.png

      58,43 kB, 541×521, 177 mal angesehen
    And i think to myself... what a wonderfuL World!

    Eddy schrieb:

    in ein bestehendes Projekt importiert
    Als DLL oder als Datei?
    Falls DLL - wie ist die kompiliert (x64, x86, AnyCPU) bitte auf AnyCPU ändern, egal, wie das Projekt steht.
    ====
    Welche Fehlermeldung genau?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Eddy schrieb:

    importiert
    Bitte meine Fragengenau beantworten:

    RodFromGermany schrieb:

    Als DLL oder als Datei?
    Falls DLL - wie ist die kompiliert (x64, x86, AnyCPU) bitte auf AnyCPU ändern, egal, wie das Projekt steht.
    =====
    Kann es sein, dass Du 2 logisch verschiedene Musik.EqualizerControl-Elemente hast: ggf. ein vorheriger Verweis und der neue Verweis, obwohl die Quellen identisch sind?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hier nutze ich keine DLL, habe nur im Projektmappenexplorer vorhandene Elemente hinzufuegen gewahlt. Ich schau mal wegen der Verweise.

    Edit:
    @RodFromGermany da war ein Verweis auf die bin/Debug/Musik.exe drin. Dachte mir erst nichts dabei(weiss auch nicht woher der kommt), aber nach dem entfernen geht es nun.
    And i think to myself... what a wonderfuL World!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Eddy“ ()