首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在双显示器方案中,如何确保窗体显示在“附加”显示器上?

在双显示器方案中,如何确保窗体显示在“附加”显示器上?
EN

Stack Overflow用户
提问于 2010-04-01 22:30:32
回答 4查看 58.1K关注 0票数 22

我有一个应用程序,其中有一个表格,我想在第二个屏幕上显示。

意思是如果应用程序在屏幕A上运行,当我单击菜单显示表单时,它应该在屏幕B上显示;如果应用程序在屏幕B上运行,当我单击菜单显示表单时,它应该在屏幕A上显示。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-01 22:32:43

您需要使用Screen类查找原始窗体不在的屏幕,然后根据该屏幕的Bounds设置第二个窗体的Location属性。

例如:

代码语言:javascript
复制
var myScreen = Screen.FromControl(originalForm);
var otherScreen = Screen.AllScreens.FirstOrDefault(s => !s.Equals(myScreen)) 
               ?? myScreen;
otherForm.Left = otherScreen.WorkingArea.Left + 120;
otherForm.Top = otherScreen.WorkingArea.Top + 120;

这将适用于任何数量的屏幕。

请注意,视频卡的配置可能会使Windows看到一个较大的屏幕,而不是两个较小的屏幕,在这种情况下,这将变得更加困难。

票数 43
EN

Stack Overflow用户

发布于 2010-04-01 22:32:13

下面是一个允许你在任何显示器上显示表单的功能。对于您当前的场景,您可以将其称为showOnMonitor(1);

本质上,您必须从Screen.AllScreens获取屏幕信息,然后获取每个屏幕的尺寸,然后将表单放在需要的位置

代码语言:javascript
复制
function void showOnMonitor(int showOnMonitor) 
{ 
    Screen[] sc; 
    sc = Screen.AllScreens; 

    Form2 f = new Form2(); 

    f.FormBorderStyle = FormBorderStyle.None; 
    f.Left = sc[showOnMonitor].Bounds.Left; 
    f.Top = sc[showOnMonitor].Bounds.Top; 
    f.StartPosition = FormStartPosition.Manual; 

    f.Show(); 
}

注不要忘记做验证,以确保您实际上有两个屏幕,否则将在访问sc[showOnMonitor]时抛出异常

票数 19
EN

Stack Overflow用户

发布于 2011-11-18 13:28:13

在OnLoad方法上,更改窗口的位置。

代码语言:javascript
复制
protected void Form1_OnLoad(...) {
    showOnMonitor(1);
}

private void showOnMonitor(int showOnMonitor) 
{ 
    Screen[] sc; 
    sc = Screen.AllScreens; 
    if (showOnMonitor >= sc.Length) {
        showOnMonitor = 0;
    }

    this.StartPosition = FormStartPosition.Manual; 
    this.Location = new Point(sc[showOnMonitor].Bounds.Left, sc[showOnMonitor].Bounds.Top);
    // If you intend the form to be maximized, change it to normal then maximized.
    this.WindowState = FormWindowState.Normal;
    this.WindowState = FormWindowState.Maximized;
}
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2561104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档