TableLayoutPanel & Drag and Drop
-
Hi all,
ich hab ein Problem mit einem TableLayoutPanel, ich will ein Drag and Drop in diesem Table erstellen das ist ja auch nicht das Thema. Jedes Mal wenn ich dann aber die aktuelle Zeile haben möchte wirft er mir -1 raus.
Hier mal der Code:
private void tableLayoutPanel1_DragDrop(object sender, DragEventArgs e) { cellpos = tableLayoutPanel1.GetCellPosition(this.GetChildAtPoint(this.PointToClient(new Point(e.X, e.Y)))); MessageBox.Show("Column: " + cellpos.Column + "\nRow: " + cellpos.Row); }
Ach und noch ne frage kann ich einzelne Zeilen einen anderen Hintergrund geben, damit will ich erreichen das der User weiß in welcher Zeile er grad ist.
Gruß
Old.school
-
was ist die Variable cellPos für ein Typ?
-
hi,
sorry vergessen mit reinzuschreiben.
private TableLayoutPanelCellPosition cellpos; private void tableLayoutPanel1_DragDrop(object sender, DragEventArgs e) { cellpos = tableLayoutPanel1.GetCellPosition(this.GetChildAtPoint(this.PointToClient(new Point(e.X, e.Y)))); MessageBox.Show("Column: " + cellpos.Column + "\nRow: " + cellpos.Row); }
-
old.school schrieb:
this.GetChildAtPoint(this.PointToClient(new Point(e.X, e.Y)))
hier liegt das Problem. Ich denke mal this ist deine Form und du fragst nun ab welches Childcontrol der Form an dieser Stelle liegt, das ist logisch aber net richtig da du nicht wissen willst welches Childcontrol der Form an diesem Punkt liegt sondern welches Childcontrol des TableLayoutPanels dort liegt.
Du musst also einfach die GetChildAtPoint vom TableLayoutPanel benutzen und die entsprechenden Mauskoordinaten relativ zum TableLayoutPanel und nicht zur ganzen Form.old.school schrieb:
Ach und noch ne frage kann ich einzelne Zeilen einen anderen Hintergrund geben, damit will ich erreichen das der User weiß in welcher Zeile er grad ist.
Nicht dass ich wüsste. Liegt imo daran das es diese Spalten und Zeilen ja gar nicht in real gibt. Es sind ja keine getrennten Bereiche, sondern du hast ein Panel und dadrin werden nur logisch beim Layouten die einzelnen Controls nach Spalten und Zeilen angeordnet.
-
Hi,
danke Talla das war der Fehler. Ich bekomm jetzt die richtigen werte aber er addet mir die Bilder irgendwie komisch. Hmm wie soll ich das beschreiben…… wenn ich jetzt z.B. das erste bild hochschiebe geht es aber sobald ich runter schiebe macht der nichts und wenn danach versuche es hoch zu schieben geht es auch nicht mehr?? Hmm…… oder wenn ich nach längerem hin und herschiebe schiebt er die auch nicht mehr richtig, ich bekomm zwar richtige werte raus aber er addet die falsch??
Ich hoffe konnte mein Problem beschreiben.
private void pictureBox_MouseDown(object sender, MouseEventArgs e) { pictureBoxtmp = new PictureBox(); pictureBoxtmp = (PictureBox)sender; tableLayoutPanel1.DoDragDrop(pictureBox, DragDropEffects.Move); } private void tableLayoutPanel1_DragDrop(object sender, DragEventArgs e) { cellpos = tableLayoutPanel1.GetCellPosition(tableLayoutPanel1.GetChildAtPoint(this.PointToClient(new Point(e.X, e.Y)))); tableLayoutPanel1.Controls.Add(pictureBoxtmp, cellpos.Column, cellpos.Row); tableLayoutPanel1.Refresh(); MessageBox.Show("Column: " + cellpos.Column + "\nRow: " + cellpos.Row); } private void tableLayoutPanel1_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Move; }
Gruß old.school