Tag: 定位

在鼠标位置(鼠标左上角)显示WPF窗口的最佳方法是什么?

通过inheritanceWindows窗体鼠标点并减去窗口的高度和宽度来设置左侧和顶部(因为我的窗口大小是固定的),我发现这部分时间是有效的: MyWindowObjectThatInheritsWindow window = new MyWindowObjectThatInheritsWindow(); System.Windows.Point mouseLocation = GetMousePositionWindowsForms(); window.Left = mouseLocation.X – 300; window.Top = mouseLocation.Y – 240; window.Show(); 编辑:这是获取鼠标位置的代码… public System.Windows.Point GetMousePositionWindowsForms() { System.Drawing.Point point = System.Windows.Forms.Control.MousePosition; return new System.Windows.Point(point.X, point.Y); } 请注意,这可以通过使窗口的右下边缘触摸鼠标光标的左上角来实现。 但是这会打破不同的屏幕分辨率,或者可能是具有不同分辨率的多个显示器? 我还没有完全缩小它,但我只是在另一台PC上尝试了相同的代码,它似乎产生的窗口不是鼠标光标的左上角,而是它的左下角,并且距离很远过去… 我应该添加我的窗口大小到内容,宽度和高度,所以我不能只使用ActualWidth和ActualHeight属性,因为它们不可用。 也许问题在于确保调整正确吗? 有没有办法做到这一点? 我确定300和240是正确的,根据我的主PC和两台显示器运行1920×1080分辨率,因为我已经计算了我明确resize的窗口中所有对象的宽度和高度。 编辑:只是尝试明确地将高度和宽度设置为240/300,以确保窗口不再按内容大小,并且在减去实际高度和宽度时仍然存在此问题! 有任何想法吗?

C#窗口定位

使用Windows窗体我想将窗口定位到特定的坐标。 我认为它可以用一种简单的方式完成,但是下面的代码根本不起作用: public Form1() { InitializeComponent(); this.Top = 0; this.Left = 0; } 但是,当只获得该窗口的句柄时,它运行良好: public Form1() { InitializeComponent(); IntPtr hwnd = this.Handle; this.Top = 0; this.Left = 0; } 您可以看到我根本不使用该指针。 我在MSDN上发现以下声明: Handle属性的值是Windows HWND。 如果尚未创建句柄,则引用此属性将强制创建句柄。 这是否意味着我们只能在创建句柄后设置窗口位置? 是否在内部使用此手柄设置了顶部/左侧? 谢谢你的澄清。