C# Button[,]

 ( bzg | 2008. november 5., szerda - 0:36 )

Sziasztok!

Egy kis segitsegre lenne szuksegem C#-ban, sok nyomogombot es van hozza a button_Click fuggveny, a problemam az lenne, hogy hogyan tudom a button_Click fuggveny megallapitani, hogy a tomb[x,y] melyik x es y ertekenel vagyok?

Button[,] tomb;

Int32 meret = 10;
for (int x = 0; x < meret; ++x)

{

for (int y = 0; y < meret; ++y)

{

this.gomb = new Button();

gomb.Text = Convert.ToString(y * 10 + x);

this.gomb.Location = new System.Drawing.Point(x * 30, y * 30);

this.Controls.Add(this.gomb);

gomb.Size = new System.Drawing.Size(30, 30);

gomb.Tag = Convert.ToString(y * 10 + x);

gomb.Click += new System.EventHandler(this.button_Click);

tomb[x,y] = gomb;

}

}

private void button_Click(Object sender, EventArgs e)

{

Button bt = (Button) sender;

}

Koszonom,
bzg

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

pl, a gomb.Tag -ba hozzá tudsz rendelni egy ID-t, amit az eventben megnézel, és az alapján azonositod, hogy melyik gombról van szó.

Idézet:
gomb.Tag = Convert.ToString(y * 10 + x);

En mondjuk nem string-et pakolnek a Tag-be, elvegre a poziciot ugyis fel akarod hasznalni joesellyel, igy minek oda-vissza konvertalgatni?
Pl. ha fixen 2D-s a feleptes, akkor ott a Point.

------------------------------------------------------
Ezt ne nezd meg!

Igen, ezt a sort pl nem is láttam, az éjji homályban:)
hát, a point helyett inkább valami saját id osztályt vagy akármit, persze akár pont a point is lehet, de az kicsit "fura" ilyenre...
Üdv

Annyira azert nem fura, elvegre neki az x es y koordinatak kellenek, ez meg vegulis pont erre valo. Mas kerdes, hogy a System.Drawing namespace valoban furcsanak tunhet ilyen szempontbol :)

------------------------------------------------------
Ezt ne nezd meg!

ha az eventhandlerböl továbbhivsz még néhány függvénybe akkor ott (pl valami utility classban)
akkor az ott már igen furcsa System.Drawing.Point-al ...és a típusból nem látszik egyértelmüen, hogy az képkoordináta vagy most mi. Föleg ha a fent emlitett utility cuccot valaki más olvassa, és Point tipust lát egyböl képernyő pontra gondol... Szerintem nem célszerü itt újrahasznositani ezt a típust.
Továbbra is javaslom valami saját osztály vagy structot létrehozni, melynek már lehet szép (egyértelmü) nevet adni.

Meggyoztel. Sajnos nem lattam tovabb a feladatnal, ugy sejtettem, hogy egy "egyosztalyos" kis szosszenet hazinak, annal meg majdnem tokmindegy.

------------------------------------------------------
Ezt ne nezd meg!

egyosztályos szösszenetnél valóban mind1 :)
A kérdésből azonban nem derült ki, hogy jelen esetben "egyosztályos szösszenetről", avagy egy több millió soros enterprise applikációról van-e szó :)

Hat nem tudom, en az egysoros szosszenetekre is igenyes vagyok. Inkabb egy ketelemu int[].
--

()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Nekem igazából az int[]el is az a bajom, hogy nemlátszik egyből, hogy mi az, ha tovább van adva valahova.... pont ezért vannak típusok, hogy tudjuk minden ojjektumról, hogy mi az.
ennyi erővel lehetne minden byte[] :)

Szerintem itt tevedes van. Nem csak az osztaly neve tud beszedes lenni, hanem a valtozoe is. Pl. egy int[] point rogton tudhato, hogy micsoda - csak konzekvens elnevezesi konvenciot kell hasznalni.
--

()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Én azt tartom szebb konvenciónak, hogy ha már a típus is megmondja, hogy az adott objektum az micsoda valójában...
...persze mindenki úgy használja ahogy jólesik, és/vagy ahogy a coding convention-je előírja:)

csak nem eltés beadandó? amőba? lóugrás? :)

koszonom a valaszokat, igy elsore kicsit magas volt amit irtatok, eppen ezert egy egyszu int-el oldottam meg az egeszet a Tabindex-ben es abbol kiszamoltam hogy hanyadik sor hanyadik gombrol van szo.

Egyebkent meg igen, ELTE, amoba csak nem tudtam az az utolso napom es ejszaka estem neki "megtanulni csharp-ul" :)

-- Soha ne vitatkozz idiotakkal! Lesulyedsz az O szintjukre es legyoznek a rutinjukkal !!! --

Komoly a mintapélda.

SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "use kocsma"; // azért kell kiadni, hogy azonosítható legyen, hogy melyik adatbázison dolgozunk
cmd.ExecuteNonQuery();

majd szólok neki, hogy írjon oda mást, tényleg fura:D
off:
itt:
Ilyen is van, tehát nyugi. Egy kávé, egy cigi, és egy szanax segít.Meg talán egy reinstall.
ott ültem mellette, és nem akartuk elhinni, és aznap bejött még egy legalább ilyen marhaság. Hja, és nem dohányzik:D