0

我需要从事件中获取 mouseDown 事件的发送者,并将其设置为要在 dragDrop 事件中使用的全局变量,以便它根据拖动的图片框调用方法。我需要控件名称或其他东西。我的尝试:

全局变量“dragSource”:

public partial class MapDesignerView : Form
    {
        public Map myMap { get; set; }
        public MapController myMapController { get; set; }
        public MapConstructor myMapConstructor { get; set; }
        public MouseEventHandler myDetectMouse { get; set; }


        object dragSource = null;

鼠标按下

private void pbxMinotaur_MouseDown(object sender, MouseEventArgs e)
            {
                pbxMap.AllowDrop = true;
                pbxMinotaur.DoDragDrop(pbxMinotaur.Name, DragDropEffects.Copy |
                DragDropEffects.Move);
                dragSource = sender;
            }

拖放

private void pbxMap_DragDrop(object sender, DragEventArgs e)
        {
            {
                if (dragSource == pbxMinotaur)
                {
                    myDetectMouse.setMinotaur(e, myMap.myCells);
                }
4

1 回答 1

1

那么究竟是什么不起作用......我认为可能导致问题的唯一一件事是您将对整个控件的引用存储在拖动源中。

一个更好的主意可能是只讲述身份。然后根据 Id 进一步测试它。

 string dragSourceName = null;


 private void pbxMinotaur_MouseDown(object sender, MouseEventArgs e)
        {
            pbxMap.AllowDrop = true;
            pbxMinotaur.DoDragDrop(pbxMinotaur.Name, DragDropEffects.Copy |
            DragDropEffects.Move);
            Control c = (sender as Control);
            if(c != null)
                 dragSourceName = c.Name;
        }

    private void pbxMap_DragDrop(object sender, DragEventArgs e)
    {
        if (dragSourceName == pbxMinotaur.Name)
        {
            myDetectMouse.setMinotaur(e, myMap.myCells);
        }
于 2013-09-18T10:35:22.590 回答