我正在尝试在C#中使用拖放功能,但是发生了一些奇怪的事情,我不知道为什么,这些是我正在使用的代码



        void imageRenderer_MouseDown(object sender, MouseEventArgs e)
        {
                imageRenderer.DoDragDrop(new DragData("Helloo",dropImage), DragDropEffects.All);
        }





这是我的DragData类,它存储1个字符串和1个图像:



    class DragData {
        public string plantName;
        public Image dragImage;

        public DragData(string name,Image dragingImage) {
            name = plantName;
            dragImage = dragingImage;
        }
    }





我的问题是在dragEnter事件中:



        void Tile_DragEnter(object sender, DragEventArgs e)
        {
                e.Effect = DragDropEffects.None;
                DragData dropedData = (DragData)e.Data.GetData(typeof(DragData));
                Image a= dropedData.dragImage;
                string b=dropedData.plantName;
        }  





现在,a不是null并且可以正常工作,但是b是null并且我不知道为什么。谢谢您的帮助以及如何解决它?

最佳答案

您正在将成员变量分配给参数:

public DragData(string name,Image dragingImage) {
name = plantName;


正确的方法是,将参数分配给成员变量:

public DragData(string name,Image dragingImage) {
plantName = name;

10-06 12:05