RaouL_BennetH
03-09-2012, 08:52
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:
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;
};
Con il suddetto codice non ho nessun problema, mi funziona perfettamente.
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:
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
};
}
L'errore che al momento non riesco a superare è quello di
sforare l'indice dell'array quando viene creato il delegate
e non ne capisco il motivo.
Vi ringrazio in anticipo.
Dopo aver aggiunto a runtime dei controlli, riesco a determinare la loro posizione
dopo averli spostati su di un'area mediante drag - drop:
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;
};
Con il suddetto codice non ho nessun problema, mi funziona perfettamente.
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:
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
};
}
L'errore che al momento non riesco a superare è quello di
sforare l'indice dell'array quando viene creato il delegate
e non ne capisco il motivo.
Vi ringrazio in anticipo.