在屏幕中央显示 Windows 窗体(双屏)

2024-03-28

我有双显示器,想要在屏幕中央显示一个窗口窗体。 (我有一个变量 MonitorId=0 或 1)。

I have:

System.Windows.Forms.Screen[] allScreens=System.Windows.Forms.Screen.AllScreens;
System.Windows.Forms.Screen myScreen = allScreens[0];

int screenId = RegistryManager.ScreenId;
// DualScreen management
if (screenId > 0)
{
    // has 2nd screen
    if (allScreens.Length == 2)
    {
        if (screenId == 1)
            myScreen = allScreens[0];
        else
            myScreen = allScreens[1];
    }
}

this.Location = new System.Drawing.Point(myScreen.Bounds.Left, 0);
this.StartPosition = FormStartPosition.CenterScreen;

但这段代码似乎并不每次都有效...它每次都只在主屏幕上显示表单。


尝试这个:

foreach(var screen in Screen.AllScreens)
{
   if (screen.WorkingArea.Contains(this.Location))
   {
      var middle = (screen.WorkingArea.Bottom + screen.WorkingArea.Top) / 2;
      Location = new System.Drawing.Point(Location.X, middle - Height / 2);
      break;
   }
}

请注意,如果左上角不在任何屏幕上,则此方法将不起作用,因此最好找到距表单中心距离最近的屏幕。

Edit

如果你想显示在given屏幕,您必须设置this.StartPosition = FormStartPosition.Manual;

尝试使用此代码:

System.Windows.Forms.Screen[] allScreens = System.Windows.Forms.Screen.AllScreens;
System.Windows.Forms.Screen myScreen = allScreens[0];

int screenId = RegistryManager.ScreenId;
if (screenId > 0)
{
    myScreen = allScreens[screenId - 1];
}

Point centerOfScreen = new Point((myScreen.WorkingArea.Left + myScreen.WorkingArea.Right) / 2,
                                 (myScreen.WorkingArea.Top + myScreen.WorkingArea.Bottom) / 2);
this.Location = new Point(centerOfScreen.X - this.Width / 2, centerOfScreen.Y - this.Height / 2);

this.StartPosition = FormStartPosition.Manual;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在屏幕中央显示 Windows 窗体(双屏) 的相关文章

  • LINQ:获取表详细信息

    我正在使用 LINQPad 我想了解表的架构详细信息 我知道我是用 SQL 来做的 SELECT column name FROM information schema columns WHERE table name table name
  • .NET Core Azure WebJobs 不从 Azure 应用程序设置读取

    I have an app service running with it s respective ConnectionString from Azure Portal The ConnectionString is point to A
  • 编译时和运行时转换 C#

    我想知道为什么 C 中的某些强制转换会在编译时进行检查 而在其他情况下则将责任转嫁给 CLR 如上所述 两者都是不正确的 但处理方式不同 class Base class Derived Base class Other static vo
  • 删除接口中的冗余类型

    我有以下接口 public interface IRevision
  • C# 中输入按键

    我尝试了这段代码 private void textBox1 KeyPress object sender KeyPressEventArgs e if Convert ToInt32 e KeyChar 13 MessageBox Sho
  • VB.NET 是否优化字符串文字的串联?

    如同this https stackoverflow com questions 288794 does c optimize the concatenation of string literals问题 但对于 VB NET 来说 因为我
  • 从 git 签出后 nuget dll 丢失

    I have a C solution containing different projects On those projects I have some normal nuget packages like Newtonsoft Js
  • 如何使用字符串参数来区分命名空间或类型?

    我需要在 NET 2 0 C 脚本中获取一些 JSON 输出 目标是使用一种方法来输出我需要的所有 JSON 提要 所有模型都具有相同的 id 和 name 属性 因此我有大约 15 个命名空间 它们在这里具有相同的部分 简而言之 因为我使
  • HttpUtility.ParseQueryString 不解码特殊字符

    Uri uri new Uri redirectionUrl NameValueCollection col HttpUtility ParseQueryString uri Query uri Query已经被解码 那么我有什么办法可以阻
  • C# - 挂钩现有 COM 对象

    假设我们有一个现有进程 或应用程序 它从 ocx 文件 例如 MyCOMLibrary ocx 调用 COM 对象 有没有办法编写一个 C 库来精确复制 ocx 文件 这样原始应用程序就可以调用您的 C 代码而不是原始 COM 对象 当然
  • MetadataException:无法加载指定的元数据资源

    突然间我不断收到MetadataException在实例化我生成的ObjectContext班级 App Config 中的连接字符串看起来正确 自上次工作以来没有更改 我尝试从底层数据库重新生成一个新模型 edmx 文件 没有任何更改 有
  • 对同一解决方案/git 存储库中的项目的 PackageReference

    目前我正在尝试设置一个带有实现类库和抽象项目的解决方案 我想在 nuget org 上找到这两个包 通常 当您只使用 ProjectReferences 时 您只需指向 csproj 随机抽象
  • 如何将 Excel 中的图表导出为图形

    我有一系列 Excel 电子表格 每个电子表格至少包含一页数据和一页根据数据创建的图表 我需要捕获 不从数据中重新生成 将现有图表作为网络友好图像 这可以通过 Java 或 Net 实现吗 我知道 POI 的东西 Java 不会这样做 或者
  • 使用VS2019创建WebService

    我想使用 Visual Studio 2019 使用 C 在现有 NET 项目中创建 WebService 在互联网上搜索 我能找到的只是旧 VS 版本的教程 如何创建它 使用 Visual Studio 2019 接收 POST 数据的最
  • 设置表单的父级

    我有一个 Windows 表单 我想从中打开一个状态表单 上面写着 正在保存 然后保存完成后消失 我想将这个小状态表单放在调用表单的中间 我尝试将 StartPosition 属性设置为 CenterParent 但它不起作用 我从其他表单
  • WCF 和数据契约上的接口

    使用 svcutil 创建 WCF 代理时 是否还可以包含数据协定继承的接口 例如 public class SomeType ISometype public string Name get set public interface IS
  • 导入 IronPython 的嵌入式库

    我已通过 NuGet 将 IronPython 标准库添加到我的 c net4 项目中 后来获得了一些参考资料 IronPython IronPython Modules IronPython SQLite IronPython Wpf M
  • List、IList、IEnumerable、IQueryable、ICollection,哪个返回类型最灵活?

    我之前已经在这里看到过这个问题 但我不满意我理解的完整后果 问题是使用 linq to sql 返回的数据层应该使用什么返回类型以获得最大的灵活性和查询能力 这是我读过 发现的 IEnumerable 是有限的 只允许向前读操作 IEnum
  • Winform DatagridView 数字列排序

    我只使用一个简单的 DataGridView 来保存一堆数据 有趣的是 我在特定列中有小数 但是当按小数列排序时 它的排序是错误的 例如 起始顺序可能是 0 56 3 45 500 89 20078 90 1 56 100 29 2 39
  • 如果finally 块包含await,为什么*有时*不会在ThreadAbortException 上执行?

    UPDATE 我不认为这个问题是重复的ThreadAbortException最后可以跳过吗 https stackoverflow com questions 18002668 can threadabortexception skip

随机推荐

  • Amazon S3 托管流媒体视频 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如果我公开提供 Amazon s3 MP4 资源 然后在该资源的 URL 周围添加 Html5 视频标
  • 如果所有变量都是 float16 而不是 float32,如何运行定义 Tensorflow 图

    默认情况下 Tensorflow 变量采用 float32 格式 为了节省内存 我尝试以 float16 运行 在我的图表中 我在每个可以将数据类型定义为 float16 的地方都这样做了 但是 当我运行代码时出现错误 下面是我的代码 im
  • 在过程触发器内动态插入记录

    我们正在寻求将我们的数据库转换为 Postgres 9 3 5 我对此没有经验 并且我正在尝试让我们的审计表启动并运行 我知道每个表都需要自己的触发器 但所有触发器都可以调用单个函数 表上的触发器正在传递需要审核的列的列表 因为我们的某些列
  • WFFM 8.0 - 缺少保存到数据库操作

    我刚刚安装了 Web Forms For Marketers 8 0 并做了一个测试表单 尝试选择Save to Database从操作列表中但它不存在 另外 我已经检查过 sitecore system Modules Web Forms
  • 哪里有指示不应写入“程序文件”区域的指南?

    许多关于SO的问题都说 Windows开发人员指南 或 Windows设计指南 说你不应该将临时数据或程序数据写入程序文件区域 但据我所知 它们都没有真正链接到文档这就是说 搜索 MSDN 没有得到任何结果 Windows 将使该区域变为只
  • clojure(带超时...宏)

    我正在寻找一个宏 如果表达式完成时间超过 X 秒 它将引发异常 这个问题在这里有更好的答案 执行具有超时功能的函数 https stackoverflow com questions 6694530 executing a function
  • Visual Studio 将项目发布到一个简单的安装程序中

    我有一个相当大的项目 包含多个类 500 多个图像以及与该项目关联的 20 多个文本文件 我一直通过右键单击来发布我的项目project gt properties 然后单击 发布 选项卡 我已将文本文件和图像包含为resources已经
  • 如何使用 CSS 使 div 上的滚动条变粗?

    如果我使用 CSS 溢出属性 overflow scroll 默认情况下我得到一个细滚动条 我如何设计它以获得宽 且平坦 的滚动条 您可以在这里找到有关如何在多个浏览器上更改滚动条设计的答案 https stackoverflow com
  • Rails activesupport 通知 - 错误的数据库运行时值

    我正在尝试记录 REST API 应用程序的请求 我为此使用 Rails 通知 如下所示http railscasts com episodes 249 notifications in rails 3 http railscasts co
  • 更改 TortoiseGit 中的存储库 url

    我们刚刚将 git 存储库更新到了新位置 我正在使用 TortoiseGit 进行一些未提交的更改 我可以在任何地方更改文件夹引用吗 我在上下文菜单中没有看到该选项 如果可以避免的话 我宁愿不重新创建和合并 因为总共大约有 14 个存储库
  • 使用现有的 Rails 应用程序添加 twitter-bootstrap-rails

    我尝试将 twitter bootstrap rails 与现有的 Rails 应用程序一起使用 并在刷新页面时收到以下错误 没有要加载的文件 less 在 app assets stylesheets bootstrap and over
  • 如何将UIScrollView的触摸事件发送到其后面的视图?

    我在另一个视图之上有一个透明的 UIScrollView 滚动视图有内容 文本和图像 用于显示信息 它后面的视图有一些用户应该能够点击的图像 并且它们上面的内容可以使用提到的滚动视图进行滚动 我希望能够正常使用滚动视图 尽管没有缩放 但是当
  • 节点检查器无法连接到节点

    我运行节点 node debug app OR node debug brk app 它回应 debugger listening on port 5858 Express server listening on port 1338 我现在
  • 将 varchar 值转换为 int,如果输入错误,不会引发异常

    有没有办法调用 Sql Server 函数 Convert Cast 而不让它们抛出异常 基本上 我有一列包含字母数字数据 我正在从字段中提取值 并且我想将数据显示为整数值 有时提取的数据不是数字 在这些情况下我希望 Sql Server
  • 为什么我嵌入的 JointJS 元素重叠?

    我正在研究 JointJS 图 使用 DirectedGraph 来处理布局 我试图实现类似于下图的效果 我需要将节点 A B C D E F G H I J 概述 或包含在单独的节点 Foo Bar Hmm 中 当我将所有元素添加到图表中
  • Android 插件将使用哪个 cmake?

    在 Android Studio 3 3 中 我使用本机 C 库 它是用 CMake 构建的 Android 插件 v 3 2 1 将根据配置选择 内置 或 外部 cmakeexternalNativeBuild 如记录于开发者 andro
  • 证书被苹果拒绝

    While configuring certificate for Push Notification on my ios build of cordova project using OneSignal the certificate i
  • 带百分比的虚线圆条

    我正在尝试制作一个带有虚线的圆形进度条 我以编程方式创建stroke dasharray and stroke dashoffset用百分比画一个圆 我需要绘制虚线圆 而不是实心圆 如下所示 我无法将实心圆更改为虚线圆 我是否遗漏了一些东西
  • 使用 C# 中的字典计算字符串中每个重复单词的出现次数[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 编辑 我详细阐述了我的问题更多 解决方案在这里用于修复重复的单词 有人问我每个重复的单词 我是新手 可能不是一个好问题 这是字符串 stri
  • 在屏幕中央显示 Windows 窗体(双屏)

    我有双显示器 想要在屏幕中央显示一个窗口窗体 我有一个变量 MonitorId 0 或 1 I have System Windows Forms Screen allScreens System Windows Forms Screen