Почему бы не работать перетаскивание? - PullRequest
0 голосов
/ 06 марта 2011

Мне нужно перетащить из окна window1.listbox в window2.panel.

A написать:

public partial class Form1 : Form
{
    Routers r = new Routers();
    public Form1()
    {
        InitializeComponent();

        r.Show();

        panel1.DragOver += new DragEventHandler(panel1_DragOver);
        panel1.DragEnter += new DragEventHandler(panel1_DragEnter);
        panel1.MouseUp += new MouseEventHandler(panel1_MouseUp);
        panel1.DragDrop += new DragEventHandler(panel1_DragDrop);
        panel1.AllowDrop = true;

        this.AllowDrop = true;
        this.DragDrop += new DragEventHandler(Form1_DragDrop);
    }

    void Form1_DragDrop(object sender, DragEventArgs e)
    {
        throw new NotImplementedException();
    }

    void panel1_DragDrop(object sender, DragEventArgs e)
    {
        if (isDrop == false)
        {
            isDrop = true;
            Button b = new Button();
            b.Text = (string)e.Data.GetData(DataFormats.StringFormat);
            b.Location = new Point(e.X, e.Y);

            this.panel1.Controls.Add(b);
        }
    }

    void panel1_MouseUp(object sender, MouseEventArgs e)
    {
        if (isDrop)
        {
            isDrop = false;
        }
    }
    bool isDrop = false;

    void panel1_DragEnter(object sender, DragEventArgs e)
    {
        isDrop = false;
        if (e.Data.GetDataPresent(DataFormats.StringFormat)) 
            e.Effect = DragDropEffects.None;
    }
    void panel1_DragOver(object sender, DragEventArgs e)
    {
        e.Effect = DragDropEffects.None;
    }
}

Окно записи2

   public partial class Routers : Form
    {
        public Routers()
        {
            InitializeComponent();

            this.listBox1.MouseDown += new MouseEventHandler(listBox1_MouseDown);
            this.listBox1.DragOver += new DragEventHandler(listBox1_DragOver);

        }


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

        private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if (this.listBox1.SelectedItem != null)
            {
                string item = this.listBox1.SelectedItem.ToString();
                this.listBox1.DoDragDrop(item, DragDropEffects.Move);
            }
        }


    }

Событие DragDrop не работает. и не меняет курсор при перетаскивании

Ответы [ 2 ]

0 голосов
/ 20 декабря 2013

См. Эту тему для решения:

Событие DragDrop не вызывается

private void Form1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.All;
}
0 голосов
/ 06 марта 2011

При перетаскивании по месту назначения вам нужно установить для e.Effect значение, отличное от None.

...