C# for-ciklusban objektum (gomb-Button) létrehozása?
Sziasztok.
Button temp_button = new Button();
temp_button.Name = "Button1";
Button1.Location = new Point(40, 40);
Button1.Text = "Klikk ide";
Controls.Add(Button1);
ez a ciklusom tartalma.
Paraszti ésszel kigondoltam, hogy először csinálok egy temp_button-t, amit majd átnevezek valamire ésaz átnevezett buttonnal folytatom.
a fent megírt kód hibás. Nem fogadja el, pedig a
temp_button.Name-vel megadtam neki a Button1 nevet. Ezek után a Button1-re tudnom kéne hivatkozni. Lehet tévedek, sőt biztos, mivel nem jó.
Kérlek segítsetek köszi szépen.
UI.: Ha tudtok jobb megoldást, az is jöhet, a lényeg, hogy több különböző nevű, helyzetű méretű, felirató gombot tudjak letenni, mindent a for ciklus növekményével megoldva, vagy más úton.
UI2.: Az is elég, ha segítő weblapot linkeltek, vagy erősen rávezettek.
Köszönöm szépen ~ AkroMenToS
Direkt ez lenne a lényege a progimnak, hogy ne kelljen 60 gombot letenni és átnevezgetni, hanem egy ciklus lepakolgatja őket.
Nem toolbox-ból csináltam, hanem a fent említett:
Button temp_button = new Button();
temp_button.Name = "Button1";
Button1.Location = new Point(40, 40);
Button1.Text = "Klikk ide";
Controls.Add(Button1);
kóddal.
A Button nevét hiába írod át bármire, nem fogsz tudni a kódból így hivatkozni rá literálként.
Javaslatom, hogy tárold el a gombokat egy tömbbe, így:
Button[] _Buttons=new Button[60];
...
for(int i=0;i<buttons.Length;i++)
{
buttons[i]=new Button();
buttons[i].Text = ...;
buttons[i].Location = ...;
Controls.Add(buttons[i]);
}
Másik javaslatom, hogy ne ugyanoda tedd mind a 60-at. ;o)
Elnézést, nem votlam következetes a nevekkel.
Button[] _Buttons=new Button[60];
...
for(int i=0;i<_Buttons.Length;i++)
{
_Buttons[i]=new Button();
_Buttons[i].Text = ...;
_Buttons[i].Location = ...;
Controls.Add(_Buttons[i]);
}
Köszönöm szépen.
Mindjárt ki is próbálom. Annyi kérdésem lenne még, hogy hogyan hivatkozok innentől rájuk? button1, button2...?
Úgy hivatkozhatsz rájuk, hogy _Buttons[x], ahol x a sorszám.
Az eseménykezelő lehet ugyanaz, mert a sender-ben mindig az a Button lesz, amit megnyomtál. Tehát ha a nevét beállítod mindig másra, vagy egyszerűen a Tag-jébe berakod inicializáláskor az i-t, akkor tudni fogod, hogy melyik gomb az.
pl.
_Buttons[i].Tag=i; //a ciklusban
illetve
var sorszam = (int)((Button)sender).Tag; //az eseménykezelőben
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!