我有一個WindowStyle =「none」和WindowState = Maximized的窗口,現在我想在我的contextmenu中設置MenuItem將應用程序切換到另一個桌面。什麼是一鍵更改桌面的最簡單的方法
什麼最簡單的方法呢?
我有一個WindowStyle =「none」和WindowState = Maximized的窗口,現在我想在我的contextmenu中設置MenuItem將應用程序切換到另一個桌面。什麼是一鍵更改桌面的最簡單的方法
什麼最簡單的方法呢?
using System.Windows.Forms;
using System.Drawing;
using System.Windows.Interop;
Screen screen = Screen.FromHandle(new WindowInteropHelper(this).Handle);
int i;
for (i = 0; i < Screen.AllScreens.Length; i++)
{
if (Screen.AllScreens[i] == screen) break;
}
i++; i = i % Screen.AllScreens.Length;
this.WindowState = WindowState.Normal;
int x = 0;
for (int j = 0; j < i; j++)
{
x += Screen.AllScreens[j].Bounds.Width;
}
this.Left = x + 1;
this.WindowState = WindowState.Maximized;
這將最大化的窗口移動到下一個監視器。我沒有,雖然測試它,因爲我只有一個顯示器。移動的窗口中沒有最大化是很難的,因爲新顯示器的尺寸不一定與舊顯示器的尺寸相同,您可以不設置WindowState並將wi ndow在屏幕上,或者獲取當前監視器上窗口的x位置並將其添加到新的x位置。使用後者時,您需要檢查新位置是否仍在顯示器內。
另外請注意,這隻有在您的顯示器設置爲彼此相鄰時纔有效。監視器堆疊時這不起作用。
我已經在與的MouseLeftButtonDown點擊最大化的窗口最小化,然後這個解決問題
,現在我可以拖動這個到其他屏幕。所述的MouseLeftButtonUp了Methode窗口最大化
private void win_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
click = new Point(e.GetPosition(this).X, e.GetPosition(this).Y);
win.WindowState = WindowState.Normal;
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
this.Left += e.GetPosition(this).X - click.X;
this.Top += e.GetPosition(this).Y - click.Y;
}
private void win_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
win.WindowState = WindowState.Maximized;
}
THX @所有:)
THX,但不能在這裏解決寬度:X + = Screen.AllScreens [j]的.WorkingArea.Width; – 2009-08-08 20:05:03
您需要將System.Windows.Forms和System.Drawing添加到您的程序集引用。 – Ruud 2009-08-08 20:05:35
我忘記了繪圖...但現在是問題,這是短暫的閃爍,但不改變桌面 – 2009-08-08 20:10:31