如何将标签拖到图片框?

时间:2013-12-06 21:17:33

标签: c# visual-studio-2008 drag-and-drop label picturebox

我想拖动label2并将其放入pictureBox1,但它不起作用,我不知道是什么问题

    private void pictureBox1_DragDrop(object sender, DragEventArgs e)
    {
          pictureBox1.AllowDrop = true;

        if (CurrentDrag.Equals("clock1"))
        {
            Label pnlDroggedTheme = (Label)sender;
            pnlDroggedTheme.Height = pictureBox1.Height;
            pnlDroggedTheme.Width = pictureBox1.Width;


            label2.Visible = false;
            correct++;
            label1.Text = correct.ToString();
            MessageBox.Show(" cerrect answer");

        }
        else
            wronge++;
            label1.Text = wronge.ToString();
            MessageBox.Show("wronge answer");
    }

这是pictureBox1的DragEnter方法

    private void pictureBox1_DragEnter(object sender, DragEventArgs e)
    {

如果被删除元素的数据来自类型字符串(标签为

),它应该复制数据
        if (e.Data.GetDataPresent(typeof(System.String)))
        {

            e.Effect = DragDropEffects.Copy; 
         }
        else
        {
            e.Effect = DragDropEffects.None;
        } 
    }

标签拖动效果很好,但我不能将它放在图片框中

    private void label2_MouseDown(object sender, MouseEventArgs e)
    {

        CurrentDrag = "clock1";
        Label labelV = (Label)sender;
        labelV .DoDragDrop(labelV .BackColor, DragDropEffects.Copy);
    }

1 个答案:

答案 0 :(得分:2)

如果数据类型为System.String,您正在进行拖放事件检查,如果不是,则执行无操作,但您正在对System.Color执行拖放操作。我认为你想做什么

Label labelV = (Label)sender;
labelV .DoDragDrop(labelV.Text, DragDropEffects.Copy);

您应该这样做或修改拖放事件以接受System.Color

此外,您应将pictureBox1.AllowDrop = true;移至构造函数或Form_Load,或者在设计时将属性设置为true。