C # / Windows Forms - Как я могу определить, кто-то в настоящее время "перетаскивает"? (не в событии DragOver) - PullRequest
0 голосов
/ 24 марта 2009

Предполагая, что я нахожусь в функции, которая вызывается в Timer on в классе Windows Forms ... как я могу определить, пытается ли пользователь в данный момент что-то "перетащить"?

пример:

public void SomeMethod()
{
    // This doesn't exist of course :)
    if (Mouse.IsDragging) ...
}

РЕДАКТИРОВАТЬ: я должен указать, что я знаю, что я могу переопределить DragEnter и DragLeave, чтобы установить мою собственную частную переменную ... но я спрашиваю / ищу решение '.Nety', если оно существует.

1 Ответ

2 голосов
/ 24 марта 2009

Легко:

        bool mDragging;
...
            mDragging = true;
            DoDragDrop("test", DragDropEffects.All);
            mDragging = false;

Универсальный:

    public static bool IsDragging()
    {
        StackFrame[] frames = new StackTrace(false).GetFrames();
        foreach (StackFrame frame in frames)
        {
            System.Reflection.MethodBase mb = frame.GetMethod();
            if (mb.Module.Name == "System.Windows.Forms.dll" && mb.Name == "DoDragDrop")
                return true;
        }
        return false;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...