我想弄清楚如何將指定的System.Windows.Forms.Form移動到另一個主屏幕上。我有ComboBox的可用屏幕列表,用戶可以選擇他喜歡的任何一個屏幕,我的應用程序應該將其中一個窗口移動到該屏幕上。移動到指定屏幕上的表格
我的筆記本電腦上只有一個屏幕,沒有外接顯示器,所以我的電腦上的ComboBox只提供一個選項。我認爲最小化期望的窗口,將它移動到所選屏幕邊界的中心左邊角落並做出最大化的工作,對吧?我無法測試它。這是一個好方法嗎?
在此先感謝!
我想弄清楚如何將指定的System.Windows.Forms.Form移動到另一個主屏幕上。我有ComboBox的可用屏幕列表,用戶可以選擇他喜歡的任何一個屏幕,我的應用程序應該將其中一個窗口移動到該屏幕上。移動到指定屏幕上的表格
我的筆記本電腦上只有一個屏幕,沒有外接顯示器,所以我的電腦上的ComboBox只提供一個選項。我認爲最小化期望的窗口,將它移動到所選屏幕邊界的中心左邊角落並做出最大化的工作,對吧?我無法測試它。這是一個好方法嗎?
在此先感謝!
下面是我做什麼,作爲一個簡單的測試......
我添加了一個簡單的包裝類,這樣我就可以改變在通話的ToString會發生什麼(我只是想看看在組合框中列出的名稱)
private class ScreenObj
{
public Screen screen = null;
public ScreenObj(Screen scr)
{
screen = scr;
}
public override string ToString()
{
return screen.DeviceName;
}
}
在窗體加載事件添加此:
foreach(Screen screen in Screen.AllScreens)
{
cboScreens.Items.Add(new ScreenObj(screen));
}
和組合框的選擇的索引改變事件我有這樣的:
private void cboScreens_SelectedIndexChanged(object sender, EventArgs e)
{
object o = cboScreens.SelectedItem;
if(null == o)
return;
ScreenObj scrObj = o as ScreenObj;
if(null == scrObj)
return;
Point p = new Point();
p.X = scrObj.screen.WorkingArea.Left;
p.Y = scrObj.screen.WorkingArea.Top;
this.Location = p;
}
它將窗體移動到每個屏幕的左上角。
謝謝。這正是我需要的。 –
@ pennyrave,如果我使用hdmi端口,此代碼是否工作? –
可能的重複:http://stackoverflow.com/questions/2561104/c-sharp-winform-show-form-in-se –
您需要獲取監視器並對其進行測試。您無法支持您從未驗證過的代碼。 –