我试图弄清楚如何将指定的System.Windows.Forms.Form移动到另一个主屏幕上。我有可用屏幕列表的ComboBox,用户可以选择他喜欢的任何一个屏幕,我的应用程序应该将其中一个窗口移动到该屏幕上。
笔记本电脑上只有一个屏幕,没有外接显示器,因此我计算机上的ComboBox只提供一个选项。我认为最小化所需的窗口,将其左侧角移动到所选屏幕的边界并且最大化将完成工作,对吧?我只是无法测试它。这是一个好方法吗?
提前致谢!
答案 0 :(得分:7)
这是我做的,作为一个简单的测试...
我添加了一个简单的包装类,以便我可以更改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;
}
它将表单移动到我的每个屏幕的左上角。