2

これは一種のばかげた質問です...私はピクチャーボックスをパネルにドラッグアンドドロップしようとしています。いくつかの例に従いましたが、機能しません。パネルのDragDropイベントは発生しません。このサイトで解決策を検索し、1年以上前に2つのトピックを見つけましたが、それらの解決策は機能しませんでした。このコードだけで新しいプロジェクトを作成しました:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
            panel1.DragDrop +=new DragEventHandler(panel1_DragDrop);
            panel1.DragOver +=new DragEventHandler(panel1_DragOver);
        }

        private void panel1_DragOver(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragOver");
        }

        private void panel1_DragDrop(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragDrop");
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            Console.WriteLine("Mouse");
            pictureBox1.DoDragDrop(pictureBox1.Text, DragDropEffects.All);
        }
    }

また、パネルとフォームのAllowDropをtrueに設定しました。DragOverとMouseDownが発生します。また、ピクチャーボックスをドラッグすると、許可されていない操作のように、カーソルが丸で囲まれた状態になります。カーソルが画像ボックスの画像になる方法はありますか?ピクチャーボックスを動かしたくないのですが、パネルにアイテムを追加するだけです。

4

2 に答える 2

5

問題は簡単に解決できます。

DragEnterで適切な効果を設定する必要があります。

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

その後、DragDropイベントが正しく発生します。

于 2013-12-18T19:55:51.050 に答える
0

リチャード、問題は、ドラッグアンドドロップがここでコーディングしたほど簡単な操作ではないということです。ここでは、コードで始まるドラッグムーブメントを開始していません。詳細については、こちらをご覧ください... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop (v = VS.90).aspx

PictureBoxを移動したいだけの場合...実行時にwinform内でpictureboxをドラッグします

そして最後に、同じWindowsフォームアプリケーションのインスタンス間でドラッグアンドドロップします

お役に立てれば。

于 2010-11-06T05:35:22.697 に答える