-1

コードに問題があります。フォーム上で画像をドラッグ アンド ドロップしようとしていますが、選択した画像ボックスを移動すると、グループ ボックスから出ると失われます。消えるだけです。

public partial class Form1 : Form
{
    int x_offset = 0; // any better to do this without having a global variable?
    int y_offset = 0;

    PictureBox dpb = new PictureBox();
    public Form1()
    {
        InitializeComponent();

        this.WindowState = FormWindowState.Maximized;
        this.AllowDrop = true;
        this.pictureBox1.MouseDown += pictureBox1_MouseDown;
        this.pictureBox2.MouseDown += pictureBox2_MouseDown;
    }

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        PictureBox me = (PictureBox)sender;
        x_offset = e.X;
        y_offset = e.Y;

    }

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            PictureBox me = (PictureBox)sender;
            me.Left = e.X + me.Left - x_offset;
            me.Top = e.Y + me.Top - y_offset;
        }
    }
4

2 に答える 2

1

PictureBoxes は、親 (GroupBox) によってクリップされています。階層を修正することもできます (View->Other windows->Document Outline)。

また、一般的には、ここで説明されているように、標準のドラッグ アンド ドロップ機能を使用することをお勧めします。 drop-picturebox-to-picturebox-in-c?forum=csharplanguage . これにより、ドラッグ アンド ドロップの特殊なケースがすべて処理されます。標準カーソルを変更するには、Cursor.Current を CreateCursor(myBitmap) によって返されるカーソルに設定します。注: CreateCursor は場合によっては失敗する可能性があるため、標準カーソルへのフォールバックを必ず提供してください。

于 2013-10-17T01:02:43.603 に答える