Halli Hallo
Ich bin gerade dabei meine ersten versuche mit eigenen Steuerelemneten zu machen.
Dazu habe ich mir ein Picturebutton gebaut, der in einen normalen Formular auch auf das Click eriegniss reagiert.
Füge ich nun den button in ein weiteres Steuerelement ein, so wird beim klicken auf diesen Steuerlement manchmal beim ersten klicken ein Ereigniss ausgelöst danach wird aber kein Ereigniss mehr ausgelöst wenn ich auf den bzw die Button klicke !!!Public Class Strecken_Control
Inherits Control
Public Class Strecken_Control
Inherits Control
Private xLineColor As Color = System.Drawing.Color.Orange
Private xTextPadColor As Color = System.Drawing.Color.White
Private xHeaderColor As Color = System.Drawing.Color.White
Private xHeaderBgColor As Color = System.Drawing.Color.Gray
Private xHeaderText As String = "Bitte Text eingeben"
Private xHeaderFont As Font = New System.Drawing.Font("Microsoft Sans" & _
"Serif", 9.75!, System.Drawing.FontStyle.Italic)
Private XImageNavigateBack As Image
Private XImageNavigateForward As Image
Friend WithEvents NavigateBack As PictureButton
Friend WithEvents NavigateForward As PictureButton
...
' DIe Paint eigenschaft wird überschrieben und das Steuerelement gezeichnet
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
' Definieren der Brushes
Dim Backgroundcolor As System.Drawing.Brush = New _
System.Drawing.SolidBrush(Me.xTextPadColor)
Dim LineColor As System.Drawing.Brush = New System.Drawing.SolidBrush( _
Me.xLineColor)
Dim HeaderTextColor As System.Drawing.Brush = New _
System.Drawing.SolidBrush(Me.xHeaderColor)
Dim HeaderBackgroundcolor As System.Drawing.Brush = New _
System.Drawing.SolidBrush(Me.xHeaderBgColor)
' Der Hintergund des Steuerlements wird nun gezeichnet
e.Graphics.FillRectangle(Backgroundcolor, Me.ClientRectangle)
' Den Hintergrund des Headers einfärben
e.Graphics.FillRectangle(HeaderBackgroundcolor, 0, 0, _
Me.ClientRectangle.Width, 35)
' Nun wird die Obere und untere Farbleiste gezeichnet
e.Graphics.FillRectangle(LineColor, 0, 0, Me.ClientRectangle.Width, 2)
e.Graphics.FillRectangle(LineColor, 0, Me.ClientRectangle.Height - 2, _
Me.ClientRectangle.Width, 2)
' Nun den Header in die Box schreiben
e.Graphics.DrawString(Me.xHeaderText, Me.xHeaderFont, HeaderTextColor, _
10, 10)
' Nun 2 neue PictureButtons zur Navigation positionieren
Me.NavigateBack = New PictureButton
Me.NavigateBack.BackgroundImageValue = Me.XImageNavigateBack
Me.NavigateBack.Size = Me.XImageNavigateBack.Size
Me.NavigateBack.Location = New System.Drawing.Point(Me.ClientSize.Width _
- (Me.XImageNavigateBack.Width * 2) - 10, 10)
Me.NavigateForward = New PictureButton
Me.NavigateForward.BackgroundImageValue = Me.XImageNavigateForward
Me.NavigateForward.Size = Me.XImageNavigateBack.Size
Me.NavigateForward.Location = New System.Drawing.Point( _
Me.ClientSize.Width - Me.XImageNavigateBack.Width - 5, 10)
Me.Controls.Add(Me.NavigateBack)
Me.Controls.Add(Me.NavigateForward)
MyBase.OnPaint(e)
End Sub
Private Sub NavigateBack_Click(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles NavigateBack.Click
MsgBox("einen datensatz zurück gehen")
End Sub
Private Sub NavigateForward_Click(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles NavigateForward.Click
MsgBox("einen Datensatz nach vorne gehen")
End Sub
End Class |