| |
VB.NET - Ein- und UmsteigerKlasse mit Button-Array | | | Autor: Ortech | Datum: 20.12.16 17:17 |
| Hallo,
ich habe eine Klasse mit mehreren Buttons (Array) erstellt.
ich erstelle ein Objekt in einer Form.
die Buttons werden auf die Form gezeichnet.
Wenn ich auf einen dieser Buttons klicke, möchte ich ,dass ein Dialog (Panel mit Dropdownboxen) sich öffnet, wo ich Eigenschaften des angeklickten Buttons ändere.
Nur wenn ich das Panel mit den Controls auf die Form zeichne/erstelle, kann ich ja nicht über die Klasse/Objekt drauf zugreifen, denn das Panel ist dann ja kein Member der Klasse.
Wie erstelle ich dann das Panel? In der Klasse selber? Wenn ja, wie?
Daran scheitere ich gerade. Habe überhaupt keinen Plan.
Ideen herzlich willkommen...
danke,
ortech | |
Re: Klasse mit Button-Array | | | Autor: Manfred X | Datum: 21.12.16 10:51 |
| Hallo!
Du könntest die Buttons in einem Tablelayoutpanel anordnen
und ein Dialogformular erstellen.
Etwa so ...
Public Class ButtonTable
Inherits TableLayoutPanel
Dim buttonlist As New List(Of Button)
Public Event Button_Clicked _
(ByVal sender As Object, e As EventArgs)
Public Sub New()
Me.ColumnCount = 1
End Sub
Public Sub Add(text As String)
Dim btn As New Button With {.Text = text}
AddHandler btn.Click, AddressOf button_click
AddHandler btn.MouseDown, AddressOf Button_MouseDown
buttonlist.Add(New Button With {.Text = text})
Me.Controls.Add(btn, 1, Me.RowCount)
End Sub
Private Sub button_click(ByVal sender As Object, e As EventArgs)
'Click-Event an Formular weiterleiten
RaiseEvent Button_Clicked(sender, e)
End Sub
Private Sub Button_MouseDown(sender As Object, _
e As System.Windows.Forms.MouseEventArgs)
If Not e.Button = _
Windows.Forms.MouseButtons.Right Then Exit Sub
If Not TypeOf sender Is Button Then Exit Sub
Dim btn As Button = DirectCast(sender, Button)
'Dialog erstellen, ausführen und Rückgabe verarbeiten
Using ButtonDlg As New ButtonDialog
With ButtonDlg
.Buttontext = btn.Text
If .ShowDialog = DialogResult.OK Then
btn.Text = .Buttontext
End If
End With
End Using
End Sub
End Class
'Dialogformular
Public Class ButtonDialog
Inherits Form
Dim lbltext As New Label With _
{.Parent = Me, .Text = "Button-Text", .Width = 120}
Dim txttext As New TextBox With _
{.Parent = Me, .Width = 120, .Left = 130}
Dim btnok As New Button With _
{.Parent = Me, .Text = "OK", .Top = 50, _
.DialogResult = Windows.Forms.DialogResult.OK}
Dim btnCancel As New Button With _
{.Parent = Me, .Text = "Abbrechen", _
.Top = 50, .Left = 130, _
.DialogResult = Windows.Forms.DialogResult.Cancel}
Public Property Buttontext As String
Set(value As String)
txttext.Text = value
End Set
Get
Return txttext.Text
End Get
End Property
Private Sub ButtonDialog_Load(sender As Object, _
e As System.EventArgs) Handles Me.Load
Me.Size = New Size(220, 100)
Me.Text = "Button einrichten"
End Sub
End Class Anwendungsbeispiel:
Public Class frmButtonTableDemo 'WinForms-Formular
Dim WithEvents ba As New ButtonTable With {.Parent = Me}
Private Sub frmButtonArray_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
ba.Add("BTN 1")
ba.Add("BTN 2")
End Sub
Private Sub ba_Button_Clicked(sender As Object, _
e As System.EventArgs) Handles ba.Button_Clicked
Dim btn As Button = DirectCast(sender, Button)
MsgBox(btn.Text & " ist betätigt worden")
End Sub
End Class
Beitrag wurde zuletzt am 21.12.16 um 10:54:49 editiert. | |
Re: Klasse mit Button-Array | | | Autor: Ortech | Datum: 21.12.16 11:23 |
| danke für deine Mühe.
Ich würde aber lieber folgend vorgehen:
Das Panel zum Setzen der Eigenschaften eines Button Objekts in der Forme erstellen und die hier gesetzten Eigenschaften auf das Objekt übertragen (z.B: Text des Button).
Der Eventhandler für den Button ist in der Klasse enthalten.
Wenn ich auf ein Button Objekt aus der Form heraus draufklicke, öffnet sichdas Panel, wo ich in einer Dropdownbox einen Wert einstelle (Button Text z.B.). Auf diesem Panel ist auch ein Button "overtake". Dieser Wert soll aufs Objekt übertragen werden.
wie also öffne ich eine Form-Panel aus der Klasse heraus?
Und wie übertrage ich einen Wert durch das Drücken eines "overtake" Buttons,der auf der Form platziert ist, ins Objekt? | |
Re: Klasse mit Button-Array | | | Autor: Manfred X | Datum: 21.12.16 12:38 |
| Ich bin mir nicht sicher, ob ich wirklich verstanden habe,
was Du erreichen möchtest.
Ich vermute, du hast eine ButtonArray-Klasse erstellt und auf der Form
eine Instanz eingerichtet, sowie einen Dialog auf einem Panel -
eine Instanz ebenfalls auf der Form.
Im Prinzip benötigt die Klasse, die dein ButtonArray enthält
öffentliche Eigenschaften, auf die die Änderungen, die im Dialog
vorgenommen werden, im Formular zugewiesen werden.
Diese (indizierten) Eigenschaften geben in der ButtonArray-Klasse
die zugewiesenen Werte auf die internen Buttons - gemäß Index - weiter. | |
Re: Klasse mit Button-Array | | | Autor: Ortech | Datum: 21.12.16 12:44 |
| genau so ist es.
Habe gerade von Folgendem erfharen :
modelviewcontroller mvc
Noch nie davon gehört. Könnte das die Lösung sein? | |
Re: Klasse mit Button-Array | | | Autor: Ortech | Datum: 21.12.16 14:14 |
| hört sich interessant an, werd mich da mal reinlesen. Danke für die Infos. | |
| 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! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|