Cześć, testuję technologię drag and drop w TableLayoutPanel, gdzie elementami w tabeli są PictureBox (docelowo mam zamiar napisać warcaby w ten sposób).
Przykładowo tabela posiada dwie kolumny i dwa wiersze, każda komórka o rozmiarze 100 x 100.
Implementacja zdarzeń wygląda następująco

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            this.pictureBox1.DoDragDrop(this.pictureBox1, DragDropEffects.Move);
        }

        private void tableLayoutPanel1_DragDrop(object sender, DragEventArgs e)
        {
            PictureBox newPic = e.Data.GetData(typeof(PictureBox)) as PictureBox;
            Point loc = this.tableLayoutPanel1.PointToClient(new Point(e.X, e.Y));
            int x = (int)loc.X / 100;
            int y = (int)loc.Y / 100;
            this.tableLayoutPanel1.Controls.Add(newPic, x, y);

        }

        private void tableLayoutPanel1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

Jednakże po uruchomieniu, tabela zachowuje się jakby była rozmiarów 150 x 150, np. w skrajnym przypadku (patrz załącznik), wartość "loc.X" powinna wynosić 200, jednakże wynosi 150. Żeby dragdrop działał poprawnie trzeba zmodyfikować dwie linijki:

            int x = (int)loc.X / 75;
            int y = (int)loc.Y / 75; 

Gdzie tu sens i logika, skoro mam ustawione rozmiary komórek na 100 x 100, a cały rozmiar tabeli na 200 x 200?