Moi,
Olen nyt aloittelemassa tuota C# ohjelmointia, enkä pääse yli niinkin yksinkertaisesta ongelmasta kun : Minun pitäisi tulostaa luku BUTTON- olioon. Eli kun painetaan nappia niin luvun napissa (.TEXT) pitäisi kasvaa portaittain 1 :llä.
Olen ohjelmoinut J :lla pitkään, mutta nuo opit eivät auta pätkääkään...
Miten siis tuon voisin tehdä...
Olen nyt aloittelemassa tuota C# ohjelmointia, enkä pääse yli niinkin yksinkertaisesta ongelmasta kun : Minun pitäisi tulostaa luku BUTTON- olioon. Eli kun painetaan nappia niin luvun napissa (.TEXT) pitäisi kasvaa portaittain 1 :llä.
Olen ohjelmoinut J :lla pitkään, mutta nuo opit eivät auta pätkääkään...
Miten siis tuon voisin tehdä...
Vastaukset 3
Vanhimmat
Tee Windows-Form, lisää sille button (tässä button1) ja kaksoiklikkaa buttonia jotta saat sille oletusviestin (Click) käsuittelijän. [nämä kai tiesitkin, mutta varmuuden vuoksi...]
Tässä esimerkki buttonin käsittelijäksi. Yritetään ensin lukea Text-propertyn nykyinen arvo integer muuttujaan, jos se ei ole numeerinen niin lennetään Exceptioniin, asetetaan siellä alkuarvoksi nolla.
Sitten vaan kasvatetaan lukua ja viedään se tekstimuotoisena buttonin Text-propertyyn.
--- snip ----
private void button1_Click(object sender, System.EventArgs e)
{
int iLuku = -1;
try
{
iLuku = Int32.Parse( this.button1.Text );
}
catch (Exception)
{
iLuku = 0;
}
this.button1.Text = ( iLuku).ToString();
}
--- snip ----
Kiitos,
Entäs jos, minulla on 2000 (esim.) nappia ja nämä napit ovat taulukossa (kaksiulotteinen).
Miten olisi helpoin tehdä vastaava ohjelma. Tietenkään en halua kirjoittaa koodia jokaiseen nappiin erikseen vaan haluaisin käyttää jotain kehittyneempää ratkaisua...
Miten ottaisin napin painalluksen kiinni ja saisin tiedon napin 'koordinaateista'/indekseistä tietooni. Ja lisäksi jokainen napin painallus kasvattaa jokaisen napin omaa laskuria (.TEXT)?
Minulla on pieni projekti meneillään ja tuohon se tyssää jos en keksi ratkaisua piakkoin :-)
Liitä kaikkiin buttoneihin sama Click-viestin käsittelijä (joko ohjelmallisesti katsomalla mallia Windows Form Designer generated koodista) tai tekemällä yhden käsittelijän ja liittämällä sen kaikkiin muihin.
Click-eventissä saat selville napin jota painettiin, sen kertoo ensimmäinen parametri eli object sender.
...
Button btn = (Button)sender;
if ( btn != null )
...
btn.Text = ( iLuku).ToString();
...
Jotkut ohjelmoivatkin .NET:issä aina noin, eli selvittävät aina lähettävän objektin senderistä. Minä käytän yleensä hyväkseni sitä tietoa että tiedän kuka sender on koska olen itse liittänyt käsittelijän juuri siihen (ei tarvita turhia castauksia). Silloin kun sama funktio käsittelee usemman objektin viestit tuota tapaa on pakko käyttää.