将表单移动到特定屏幕

时间:2011-12-07 18:02:40

标签: c# .net winforms window screen

我试图弄清楚如何将指定的System.Windows.Forms.Form移动到另一个主屏幕上。我有可用屏幕列表的ComboBox,用户可以选择他喜欢的任何一个屏幕,我的应用程序应该将其中一个窗口移动到该屏幕上。

笔记本电脑上只有一个屏幕,没有外接显示器,因此我计算机上的ComboBox只提供一个选项。我认为最小化所需的窗口,将其左侧角移动到所选屏幕的边界并且最大化将完成工作,对吧?我只是无法测试它。这是一个好方法吗?

提前致谢!

1 个答案:

答案 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;
}

它将表单移动到我的每个屏幕的左上角。