| |
VB.NET - Ein- und UmsteigerPaint auf dynamisch erstellten Button | | | Autor: henrikl2000 | Datum: 02.08.15 13:43 |
| Hallo,
Wie kann ich auf einen dynamisch erstellten Button zeichnen?
Ich habe es versucht mit
AddHandler nbRecipe.Paint, AddressOf NbRecipePaint
Private Sub NbRecipePaint(ByVal sender As Object, ByVal e As PaintEventArgs)
Dim objPen As Pen = New Pen(Color.Blue, 2)
e.Graphics.DrawRectangle(objPen, 3, 3, sender.Width - 5, sender.Height _
- 5)
e.Graphics.DrawEllipse(objPen, 3, 3, sender.Width - 5, sender.Height - _
5)
End Sub Leider ohne Erfolg.
Ich bin für eure Hilfe sehr dankbar.
Gruß,
Henrik 0 | |
Re: Paint auf dynamisch erstellten Button | | | Autor: GPM | Datum: 02.08.15 14:39 |
| Hier mit WithEvents und AddHandler:
Public Class Form1
Dim WithEvents Btn1 As New Button With {.Width = 130, .Height = 50, .Parent _
= Me}
Dim Btn2 As New Button With {.Left = 150, .Width = 130, .Height = 50, _
.Parent = Me}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler Btn2.Paint, AddressOf Btn2_Paint
End Sub
Private Sub Btn1_Paint(sender As Object, e As PaintEventArgs) Handles _
Btn1.Paint
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
e.Graphics.FillEllipse(Brushes.Red, e.ClipRectangle)
End Sub
Private Sub Btn2_Paint(sender As Object, e As PaintEventArgs)
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
e.Graphics.FillEllipse(Brushes.Blue, e.ClipRectangle)
End Sub
End Class MfG GPM 0 | |
Re: Paint auf dynamisch erstellten Button | | | Autor: henrikl2000 | Datum: 02.08.15 16:28 |
| Hallo GPM,
Danke für deine Antwort.
Das funktioniert leider nicht. Vielleicht weil mein Button ein UserControl ist.
Beim Click funktioniert es aber. Und bei MouseClick eben so.
AddHandler nbRecipe.Click, AddressOf nbRecipeClick
Private Sub nbRecipeClick(ByVal sender As Object, ByVal e As EventArgs)
' Klik på tilbage knappen
If DirectCast(sender, NButton).Name = "NcmdBackRecipe" Then
MsgBox(DirectCast(sender, NButton).Name)
For Each pan As Control In Me.Controls.OfType(Of NPanel)()
If pan.Name = DirectCast(sender, NButton).Parent.Name Then
pan.Location = New Point(Me.Width, 0)
pan.Visible = False
Do While NpanCategories.Width < Me.Width
NpanCategories.Width += 5
If NpanCategories.Width > Me.Width Then _
NpanCategories.Width = Me.Width
Loop
NpanCategories.Visible = True
End If
Next
End If
End Sub Hier mein Paint für den Button.
Private Sub NbRecipePaint(ByVal sender As Object, ByVal e As PaintEventArgs)
Dim objPen As Pen = New Pen(Color.Blue, 2)
e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
e.Graphics.FillEllipse(Brushes.Blue, e.ClipRectangle)
End Sub Und bei Erstellung von den Button
AddHandler nbRecipe.Paint, AddressOf NbRecipePaint 0 | |
Re: Paint auf dynamisch erstellten Button | | | Autor: Manfred X | Datum: 02.08.15 20:49 |
| Hallo!
Deinen Code habe ich nicht näher angeschaut.
Welche Routine steht wo? Was bedeuten die Variablenbezeichner?
Welches Ereignis soll wo verarbeitet werden?
Hier ein Usercontrol mit dynamisch erstellten Buttons und Ereignisroutinen.
Public Class ucButtons
Public Sub New(ParamArray btnTexte() As String)
InitializeComponent()
Dim t As Integer
For Each text As String In btnTexte
t += 30
Dim btn As New Button With _
{.Parent = Me, .Text = text, .Top = t, .Width = 300}
AddHandler btn.Click, AddressOf buttonclick
AddHandler btn.Paint, AddressOf buttonpaint
Next text
Me.Height = t + 30
Me.Width = 320
End Sub
Private Sub buttonclick(ByVal sender As Object, e As EventArgs)
MessageBox.Show(DirectCast(sender, Button).Text & " ist angeclickt" & _
"worden")
End Sub
Public Sub buttonpaint(ByVal sender As Object, e As PaintEventArgs)
Using br As New SolidBrush(Color.Red), _
brt As New SolidBrush(Color.Black)
e.Graphics.FillRectangle(br, e.ClipRectangle)
e.Graphics.DrawString(DirectCast(sender, Button).Text, _
New Font("Arial", 10), brt, _
e.ClipRectangle.Top + 2, e.ClipRectangle.Left + 2)
End Using
End Sub
End Class Und hier das anwendende Formular.
Public Class frmButtons
Dim ucb As New ucButtons _
("Wo", "liegt", "das", "Problem?") With {.Parent = Me}
End Class
Beitrag wurde zuletzt am 02.08.15 um 20:56:37 editiert. | |
Re: Paint auf dynamisch erstellten Button | | | Autor: henrikl2000 | Datum: 03.08.15 10:07 |
| Hallo Manfred,
Danke für deine Antwort.
Es ist ein bisschen schwierig zu erklären.
AddHandler nbRecipe.Click, AddressOf nbRecipeClick
AddHandler nbRecipe.Paint, AddressOf NbRecipePaint Steht in den Sub wo der Button erstellt werde.
Ich verstehe nicht ganz was du mit Variablenbezeichner meinst.
Mein UserControl ist ein dll die ich in ein anderes Projekt verwende.
Es muss an mein dll liegen. Ich habe gerade einen normalen Button gemacht mit den obengenannten AddHandler und auf dem Button wird ein Ellipse gezeichnet.
Aber bitte verschwende nicht mehr von deiner Zeit damit. Ich habe es gelöst mit eine extra Funktion in mein dll.
Vielen Dank noch für die Hilfe.
0 | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|