Bottoni in serie

lunedì 01 dicembre 2008 - 16.51

toniovigi Profilo | Expert

Ciao ragazzi,piccola amnesia

for(i=0;i<5;i++)
{
Button test = new Button();
test.Text = "test numero:"+i.ToString();
test.SetBounds(5+i;6+i);
this.Controls.Add(test);
}

come faccio a far si che ogni bottone abbia un nome diverso
button test+i = new button()
qualcosa del genere??

aiedail92 Profilo | Expert

Ciao

Non puoi fare esattamente quello che vuoi, però puoi sempre usare un array:

Button[] buttons = new Button[5]; for (int i = 0; i < 5; i++) { Button test = new Button(); test.Text = "test numero:" + i.ToString(); //Ricontrolla SetBounds: non ha questa firma test.SetBounds(5 + i, 6 + i); this.Controls.Add(test); buttons[i] = test; }

Luca

toniovigi Profilo | Expert

provo subito,quindi nn cè un modo per creare ad esempio 5 bottoni di fila con un nome diverso, sfruttando la variabile del ciclo???

aiedail92 Profilo | Expert

I bottoni li puoi creare, quello che non puoi fare con un ciclo è dichiarare le variabili come intendi tu...

Comunque l'array risolve il problema perché hai un nome solo e puoi comunque accedere alle variabili mediante l'indice: si tratta solo di scrivere due caratteri in più ( "[" e "]" )

Luca

toniovigi Profilo | Expert

gia che c6,
come faccio a far si che quando avvio la mia winform possa spostare il bottone appunto sulla form??trascinandolo col mouse intendo!

grazie ancora e grazie per la risposta!

aiedail92 Profilo | Expert

Il metodo è del tutto simile a quello spiegato su questo articolo:

http://www.dotnethell.it/tips/Move-Borderless-Windows.aspx

Solo che devi applicarlo ad ogni singolo bottone e non al Form. Se non riesci ti dò una mano a scrivere il codice.

Luca

toniovigi Profilo | Expert

tornando al cliclo di prima dovrei associare quindi quel listato ad ogni bottone...

aiedail92 Profilo | Expert

Sì, basta aggiungere ad ogni bottone il gestore eventi per MouseDown e MouseMove:

void CreaBottoni() { for (int i = 0; i < 5; i++) { Button test = new Button(); test.Text = "test numero:" + i.ToString(); test.MouseDown += new MouseEventHandler(test_MouseDown); test.MouseMove += new MouseEventHandler(test_MouseMove); this.Controls.Add(test); buttons[i] = test; } } void test_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point pt = Control.MousePosition; pt.Offset(offset); (sender as Button).Location = this.PointToClient(pt); } } Point offset; void test_MouseDown(object sender, MouseEventArgs e) { offset = new Point(-e.X, -e.Y); }

Luca

toniovigi Profilo | Expert

test.MouseDown += new MouseEventHandler(test_MouseDown);
test.MouseMove += new MouseEventHandler(test_MouseMove);

non mi torna questa sintassi

toniovigi Profilo | Expert

a capito test_mousedown e l'altro era 2 funzioni ok:):)

sorry
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5