No a to je třeba i můj případ. Mám devět tlačítek, které po stisku zjišťují někde něco. U sedmi z těch tlačítek je kód prakticky identický, jen u dvou je trochu jiný. V současné době to řeším pro každý button extra a je to šílené, takže výše porazená metoda je mi užitečná. Ale stejně neumím dořešit následující. Mám pod sebou dva Buttony EDSbutton a SWSbutton (třeba, rád používám i v příkladech něco popisného než but1 a but2 atd.). A vedle nich jsou dva TextBoxy EDStext a SWStext. Pokud zmáčknu EDSbutton, chci, aby se výsledek zapsal do EDStext. Ale to EDStext bych chtěl "vytvořit" dynamicky. Tzn. ne pomocí Case Select, např., ale prostě jakoby dynamicky vytvořit název toho textboxu, do kterého chci výsledek zapsat.
Public Class Form1
Dim prefixy() As String = {"EDS", "SWS"}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To 1
Dim but As New Button
Dim txtbox As New TextBox
but.Name = prefixy(i) & "button"
txtbox.Name = prefixy(i) & "text"
but.Text = prefixy(i)
txtbox.Text = prefixy(i)
but.Location = New Point(20, 20 + i * 25)
txtbox.Location = New Point(73, 20 + i * 25)
but.Size = New Size(50, 23)
txtbox.Size = New Size(220, 23)
Me.Controls.Add(but)
Me.Controls.Add(txtbox)
AddHandler but.Click, AddressOf VsechnyButtony_click
Next
End Sub
Private Sub VsechnyButtony_click(ByVal sender As Object, ByVal e As EventArgs)
ZapisHodnotu(sender.name, "Tohle je " & sender.name & " odpovídající textbox")
End Sub
Private Sub ZapisHodnotu(ByVal DoJakehoTextboxu As String, ByVal CoMamZapsat As String)
DoJakehoTextboxu = DoJakehoTextboxu.ToString.Substring(0, 3) & "text"
For Each Obj As Control In Me.Controls
If Obj.Name = DoJakehoTextboxu Then
Obj.Text = CoMamZapsat
Else
Obj.Text = ""
End If
Next
REM
End Sub
End Class
Opravdu neexistuje způsob, jak dynamicky vytvořit odkaz na ten TextBox z té hodnoty sender.name? To musím kvůli tomu procházet celou kolekci a vybírat to pomocí podmínky? Ono při dvou prvcích dynamicky generovaných se to může zdát zbytečné, ale představte si, kdy chci takhle obsluhovat třeba 30 tlačítek a k nim příslušné textboxy. Děkuji za nakopnutí správným směrem. PV
|