|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
[.net 4.0]Controlli e delegate a runtime
Ciao a tutti.
Dopo aver aggiunto a runtime dei controlli, riesco a determinare la loro posizione dopo averli spostati su di un'area mediante drag - drop: Codice:
int posX = 0; int posY = 0; Button b = new Button(); b.Text = "prova"; Point location = Point.Empty; pannello.Controls.Add(b); DragHelper.SetDraggable(b); b.MouseUp += delegate(object mySender, MouseEventArgs me) { location = b.PointToScreen(Point.Empty); posX = location.X; posY = location.Y; }; I controlli che aggiungo poi vengono memorizzati su un database. Il problema lo ho quando, dopo aver caricato i dati dal database ed i controlli riprendono le posizioni giuste, devo gestire nuovamente il drag drop: Codice:
try { int counter = myController.ObjList.Count; Button[] b = new Button[counter]; for(int i = 0; i < counter; i++); { b[i] = new Button(); b[i].Text = myController.ObjList[i].Descrizione; b[i].Location = new Point(myController.ObjList[i].PosX, myController.ObjList[i].PosY); pannello.Controls.Add(b[i]); DragHelper.SetDraggable(b[i]); //ora iniziano i miei problemi b[i].MouseUp += delegate(object mySender, MouseEventArgs me) { //devo fare in modo di ricavare la X e la Y //perchè se l'oggetto cambia posizione devo //rimemorizzarla nel db }; } sforare l'indice dell'array quando viene creato il delegate e non ne capisco il motivo. Vi ringrazio in anticipo.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() Ultima modifica di RaouL_BennetH : 03-09-2012 alle 08:56. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ok, capito dov'era il problema:
Codice:
for(int i = 0; i < bla; i++) { //aggiungo i controlli control[i].MouseUp += delegate(object mySender, MouseEventArgs me) { Button bb = mySender as Button; blah.... }; }
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:01.