Событие MouseMove не статично и доступно только для чтения - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь добавить делегат для события "mousemove" в метод в классе.Я использую EventHandler, который я использовал бы для Xaml «MouseMove», но он недоступен, и только «MouseMoveEvent» (я не знаю, влияет ли это на вещи).

Я посмотрел на2 разных типа в метаданных, но это мне мало что говорит.Я также попытался сделать метод, который связан с доступом только для чтения, и статический, но он недействителен.

Я делаю делегат следующим образом:

MainWindow.MouseMoveEvent += delegate (object sender, MouseEventArgs e) { Project.Mouse_Move(this); };

Где MainWindow - окномоего интерфейса.Это функция, которую она вызывает

public partial class Program
{
   public void Mouse_Move(MainWindow MainWind)
    {

    }
}

Я пытаюсь получить тот же результат, как если бы вы делали это через xaml:

Title="MainWindow" MouseMove="Window_MouseMove">

и метод, подобный этому:

 private void Window_MouseMove(object sender, MouseEventArgs e)
    {

    }

Любое решение или ответ приветствуются, и если возможен другой путь, просто скажите.Спасибо.

1 Ответ

1 голос
/ 14 мая 2019

MainWindow является типом. Вам нужна ссылка на фактический экземпляр окна, чтобы иметь возможность подключить обработчик события к его MouseMove событию. Попробуйте Application.Current.MainWindow:

Application.Current.MainWindow.MouseMove += delegate (object sender, MouseEventArgs e) { Project.Mouse_Move(this); };

Или Application.Current.Windows:

var window = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
if(window != null)
    window.MouseMove += delegate (object sender, MouseEventArgs e) { Project.Mouse_Move(this); };
...