获取鼠标关闭事件的发送者

本文关键字:发送者 事件 鼠标 获取 | 更新日期: 2023-09-27 18:31:50

我需要从事件中获取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);
                }

获取鼠标关闭事件的发送者

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

更好的主意可能是只写 Id,然后根据 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);
        }