Úvod Nejdříve se chci omluvit za stupidní název tématu. Opravdu jsem 10 minut přemýšlel, jak bych můj problém nejlépe pojmenoval. Ještě bych rád řekl, že jsem samouk. S Basicem pracuji už asi 2 roky, mám za sebou tak 30 - 50 úspěšně fungujících aplikací. Přočetl jsem už pár knih (půjčených), a když něco nevím, najdu si to na internetu. Kód se snažím pochopit, a ne ho zkopírovat. Co je za problém? Představte si, že mám 5 buttonů. A když zmáčknu 1., chci zavolat funkci a předat ji argument ,,1", u druheho buttonu 2, atd. Můj problém je, že nevím, kolik budu potřebbovat buttonů (třeba 50). Vytvořím tedy cyklus který mi na formulář přidá buttony
For o = 0 To UBound(pole)
'vytvori picturebox
Dim pic As New PictureBox
pic.Size = New Size(117, 89)
pic.Location = New Point(1,1)
me.controld.add(pic)
Toto je jen ukázka. (v projektu mám promenne, které vzdy picturebox posunou, ci vytvori novou radu). HLAVNĚ jde o to, že přidávám na formulář buttony, nebo pictureboxy(to je jedno) EVENT do smyčky jsem přidal
'přidá handler
AddHandler pic.Click, AddressOf Me.pic_click
A ZDE JE PROBLÉM Každý picturebox po kliknutí vyvolá stejnou proceduru (pic_click), a já ani pomocí senderu, či e nedokážu zjistit jméno komponenty, která jej vyvolala. Potřebuji, aby při kliknutí na picturebox1 se zavolala funkce a předal se ji argument 1, picturebox2, argument 2 atd. Mohl bych udělat toto
Select Case i
Case 0
AddHandler pic.Click, AddressOf Me.pic0_click
Case 1
AddHandler pic.Click, AddressOf Me.pic1_click
atd...a apak bych musel vytvořit procedury pic1_click a pic0_click Také mne napalo:
AddHandler pic.Click, AddressOf Me.pic_click( ?, ?,i)
Private Sub pic_click(ByVal sender As System.Object, ByVal e As System.EventArgs, ByVal i As Integer)
End Sub
Tedy že bych k proceduře pic_click přidal i, a nějak ho té proceduře předal..? A JEŠTĚ OTÁZKA Když přidám na formulář button
dim mynewbutton as new button
mynewbutton.name = "Button1"
me.controls.add(mynewbutton)
Tak jak se na něj odkážu? pod jménem button1 jej ,,nevidím". Já jsem to dělal takto
Me.Controls.Item(0)
Což je pěkné a dostačující, ale když někdy v budoucnu na formulář manuálně přidám nějakou komponentu, index mého buttonu se znmění, a taky nemám zájem zjišťovat, jaký index má který button... Mockrát Vám děkuji za Váš čas a případné odpovědi
|