2

私はFlowlayoutPanelでpictureBoxをドラッグアンドドロップしていますが、イベントはフォームの位置を返します... FlowLayoutPanelでこの位置が必要です(pictureBoxesはFlowLayoutPanelにあり、そこにドラッグアンドドロップしています)

   public Form1()
    {
        InitializeComponent();

        flowLayoutPanel1.AllowDrop = true;
    }


    private void pictureBox_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            picBox = (PictureBox)sender;
            if (picBox.Image != null)
            {
                var dragImage = new Bitmap((Bitmap)picBox.Image, picBox.Size);
                IntPtr icon = dragImage.GetHicon();
                Cursor.Current = new Cursor(icon);
                DoDragDrop(picBox.Image, DragDropEffects.Copy);
            }
        }
    }


        void Form1_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(typeof(Bitmap)))
            e.Effect = DragDropEffects.Copy;
    }

    // Occurs when the user releases the mouse over the drop target 
    void Form1_DragDrop(object sender, DragEventArgs e)
    {
       MessageBox.Show("Posicao x " + e.Y + "Posicao Y " + e.Y);//reutrn the position in form, not in flowLayoutPanel
    }
4

1 に答える 1

6

この方法を使用する必要があります。

var point = flowLayoutPanel1.PointToClient(new Point(e.X, e.Y));

これにより、画面の位置座標がコントロール1に変換されます。詳細については、こちらをご覧ください。

于 2013-02-27T12:17:42.600 に答える