Kezdőoldal » Számítástechnika » Programozás » C# for-ciklusban objektum...

C# for-ciklusban objektum (gomb-Button) létrehozása?

Figyelt kérdés

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



2012. aug. 26. 09:05
 1/6 anonim ***** válasza:
ömm lehet hülyeség, de button-nál létrehoz neki egy private class-ot, ott átírtad a nevét? Vagy csak szimplán csináltál egy gombot, nem windows form application-ban adtad hozzá toolboxból?
2012. aug. 26. 12:23
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

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.

2012. aug. 26. 12:39
 3/6 anonim ***** válasza:

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)

2012. aug. 27. 09:35
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:

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]);

}

2012. aug. 27. 09:37
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:

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...?

2012. aug. 27. 10:38
 6/6 anonim ***** válasza:

Ú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

2012. aug. 27. 11:07
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!