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?
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
- Imports System.ComponentModel.Design
- Imports System.Windows.Forms.Design
- Imports System.ComponentModel
- Public Class EqualizerDesigner
- Inherits ParentControlDesigner
- Private ReadOnly Property HostControl() As EqualizerControl
- Get
- Return DirectCast(Control, EqualizerControl)
- End Get
- End Property
- Public Sub New()
- MyBase.New()
- _DesignerVerbCollection.Add(New DesignerVerb("Slider hinzufuegen", AddressOf OnAddSlider))
- '_DesignerVerbCollection.AddRange({New DesignerVerb("Slider hinzufuegen", AddressOf OnAddSlider), New DesignerVerb("Slider entfernen", AddressOf OnRemoveSlider)})
- End Sub
- Protected Overrides Sub OnPaintAdornments(ByVal pe As System.Windows.Forms.PaintEventArgs)
- MyBase.OnPaintAdornments(pe)
- Dim dashedPen As New Pen(Color.Gray)
- Dim borderRectangle As Rectangle = Control.ClientRectangle
- borderRectangle.Width -= 1
- borderRectangle.Height -= 1
- dashedPen.DashStyle = Drawing2D.DashStyle.Dash
- pe.Graphics.DrawRectangle(dashedPen, borderRectangle)
- dashedPen.Dispose()
- End Sub
- Private _DesignerVerbCollection As New DesignerVerbCollection
- Public Overrides ReadOnly Property Verbs() As DesignerVerbCollection
- Get
- If _DesignerVerbCollection.Count = 2 Then
- If HostControl.Sliders.Count > 0 Then
- _DesignerVerbCollection(1).Enabled = True
- Else
- _DesignerVerbCollection(1).Enabled = False
- End If
- End If
- Return _DesignerVerbCollection
- End Get
- End Property
- Private _IDesignerHost As IDesignerHost
- Public ReadOnly Property DesignerHost() As IDesignerHost
- Get
- If _IDesignerHost Is Nothing Then
- _IDesignerHost = DirectCast(GetService(GetType(IDesignerHost)), IDesignerHost)
- End If
- Return _IDesignerHost
- End Get
- End Property
- Private _ISelectionService As ISelectionService
- Public ReadOnly Property SelectionService() As ISelectionService
- Get
- If _ISelectionService Is Nothing Then
- _ISelectionService = DirectCast(GetService(GetType(ISelectionService)), ISelectionService)
- End If
- Return _ISelectionService
- End Get
- End Property
- Private Sub OnAddSlider(ByVal sender As Object, ByVal e As EventArgs)
- Dim ctrls As Control.ControlCollection = HostControl.Controls
- RaiseComponentChanging(TypeDescriptor.GetProperties(HostControl)("Sliders"))
- Dim sl As Slider = DirectCast(DesignerHost.CreateComponent(GetType(Slider)), Slider)
- HostControl.Sliders.Add(sl)
- sl.Location = New Point(ctrls.Count * 20, 0)
- sl.Range = HostControl.Range
- sl.ForeColor = HostControl.ForeColor
- RaiseComponentChanged(TypeDescriptor.GetProperties(HostControl)("Sliders"), ctrls, HostControl.Sliders)
- HostControl.SelectedSlider = sl
- AddHandler sl.ValueChanged, AddressOf HostControl.Sliders_ValueChanged
- SetVerbs()
- End Sub
- Private Sub OnRemoveSlider(ByVal sender As Object, ByVal e As EventArgs)
- Dim ctrls As Control.ControlCollection = HostControl.Controls
- If HostControl.SelectedIndex < 0 Then
- Return
- End If
- RaiseComponentChanging(TypeDescriptor.GetProperties(HostControl)("Slider"))
- DesignerHost.DestroyComponent(CType(HostControl.Sliders(HostControl.SelectedIndex), Slider))
- RaiseComponentChanged(TypeDescriptor.GetProperties(HostControl)("Sliders"), ctrls, HostControl.sliders)
- SelectionService.SetSelectedComponents(New IComponent() {HostControl}, SelectionTypes.Auto)
- SetVerbs()
- End Sub
- Private Sub SetVerbs()
- Select Case HostControl.Sliders.Count
- Case 0
- Verbs(1).Enabled = False
- Case 1
- Verbs(1).Enabled = True
- End Select
- End Sub
- Protected Overrides Sub PostFilterProperties(ByVal properties As IDictionary)
- properties.Remove("Text")
- MyBase.PostFilterProperties(properties)
- End Sub
- Public Overrides Sub OnSetComponentDefaults()
- HostControl.Sliders.Add(DirectCast(DesignerHost.CreateComponent(GetType(Slider)), Slider))
- HostControl.Sliders.Add(DirectCast(DesignerHost.CreateComponent(GetType(Slider)), Slider))
- Dim equalizer As EqualizerControl = DirectCast(Control, EqualizerControl)
- equalizer.Sliders(0).Location = New Point(20, 0)
- equalizer.Sliders(0).ForeColor = HostControl.ForeColor
- DirectCast(equalizer.Sliders(0), Slider).Range = Ranges._0To10
- equalizer.Sliders(1).Location = New Point(40, 0)
- equalizer.Sliders(1).ForeColor = HostControl.ForeColor
- DirectCast(equalizer.Sliders(1), Slider).Range = Ranges._0To10
- HostControl.SelectedIndex = 0
- End Sub
- Public Overrides ReadOnly Property SelectionRules() As SelectionRules
- Get
- Dim rules As SelectionRules = MyBase.SelectionRules
- rules = SelectionRules.Moveable Or SelectionRules.Visible Or SelectionRules.None
- Return rules
- End Get
- End Property
- End Class
And i think to myself... what a wonderfuL World!