|
|||||||
|
|
|
![]() |
|
|
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 09: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:39.



















