如何在两个屏幕上获取鼠标位置

时间:2018-12-31 06:25:56

标签: c# uwp

我正在开发一个UWP应用程序,该应用程序在两个显示器上包括两个窗口页面。 我想同时将第二个屏幕上的鼠标位置(x,y)转换为第一个屏幕上的文本块。

我执行以下代码,但结果仅为“ x = 0”。

 MainPage.xaml.cs

    public double Xpage2;
    textblock.Text = $" X = {Xpage}";

Page2.xaml.cs

MainPage mainpage = new MainPage();

private void CoreWindow_PointerMoved(CoreWindow sender, PointerEventArgs args)

        {
            Point ptr = args.CurrentPoint.Position;
            mainpage.Xpage2 = ptr.X;
        }

如何在另一个屏幕上获取鼠标位置(Xpage)?

我需要一个解决方案,以同时将Point ptr的位置值从另一个类获取到变量Xpage2

1 个答案:

答案 0 :(得分:1)

您试图更改(new MainPage())对象中的Xpage2,而不是使用现有的MainPage对象。

  

MainPage mainpage = new MainPage();

请勿创建新的MainPage对象,因为它将不包含导航时创建的对象。而是在导航到如下所示的page2时传递现有对象

在主页中

CoreApplicationView newView = CoreApplication.CreateNewView();
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
   .....
   Frame.Navigate(typeof(Page2),this) // this means existing MainPage object.
   ....
}

然后通过在e.parameter事件中使用OnNavigatedTo来接收现有对象。

在Page2

MainPage mainpage;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
   mainpage = e.Parameter as MainPage;
   base.OnNavigatedTo(e);
}

现在您可以设置mainpage.Xpage2 = ptr.X;,它将反映在现有对象中。