将窗体移动到指定的屏幕上
本文关键字:屏幕 窗体 移动 | 更新日期: 2023-09-27 18:17:00
我正试图找出如何移动指定的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;
}
}
在form load事件中,我添加了这个:
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;
}
它将窗体移动到每个屏幕的左上角。