سؤال

هذا نوع من السؤال الغبي ... أحاول سحب وإسقاط صندوق صور على لوحة. لقد تابعت بعض الأطراف ، لكنها لا تعمل. لم يتم رفع حدث Dragdrop للوحة. لقد بحثت في موقع Thi عن حل وموضوعين على مدار عام ، لكن حلولهم لم تنجح. لقد قمت بإنشاء مشروع جديد ، مع هذا الرمز فقط:

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);
        }
    }

أنا أيضا تعيين السماح للوحة والنموذج إلى صحيح. يتم رفع Dragover و Mousedown. أيضًا ، عندما أقوم بسحب صندوق Picturebox ، يصبح المؤشر محظورًا محظورًا ، كما لو كانت عملية لم تكن مسموحًا بها. هل هناك طريقة يصبح المؤشر الصورة في مربع الصورة؟ لا أريد أن يتحرك مربع الصورة ، فقط لإضافة عنصر إلى اللوحة.

هل كانت مفيدة؟

المحلول

ريتشارد ، المشكلة هي أن السحب والإسقاط ليسا عملية بسيطة كما قمت بترميزك هنا. هنا لم تبدأ حركة السحب التي يجب أن تبدأ بالرمز ويمكنك قراءة المزيد عنها هنا ... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dodragdrop(v=vs.90).aspx

إذا كنت تريد فقط نقل صندوق الصور ... سحب Picturebox داخل Winform في وقت التشغيل

وأخيرا سحب وإسقاط بين حالات تطبيق Windows نفسها

أتمنى أن يساعدك هذا.

نصائح أخرى

المشكلة سهلة حلها.

يجب عليك فقط ضبط التأثير المناسب لـ Dragenter:

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

بعد إطلاق الحدث Dragdrop بشكل صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top