将 C# Windows 窗体置于另一个窗口的中心

2023-11-29

我希望我的表单在相对于调用我的表单时处于活动状态的窗口的中心启动并打开。假设如果 Firefox 处于活动状态并且我显示表单,我希望我的表单显示在 Firefox 窗口的“中心”。

我认为实现此目的的一种方法是使用 user32.dll 中的 SetWindowPos,但我 不太确定是否有更简单的方法。

我已经尝试过 SetWindowPos 并发现我可以轻松地将窗口在整个屏幕上居中,但我不太确定应该从哪里开始将其相对于另一个窗口居中。

基本上,我需要:

  1. 抓取窗口位置/大小
  2. 进行数学计算,找到中心坐标减去要准备的表格大小
  3. 显示我的表单并使用设置窗口位置来正确定位它?

注意:CenterParent 对此不起作用,它似乎只适用于另一个 Form 控件。我想在其他窗口中使用它,例如 Firefox。


如果您希望新窗口相对于父窗口居中,则可以将子窗体的“StartPosition”设置为“CenterParent”。如果您想让新窗口相对于其他窗口居中,那么我认为您已经处理了 Windows API。

[DllImport("user32.dll")]  
static extern IntPtr GetForegroundWindow();  


private IntPtr GetActiveWindow()  
{  
    IntPtr handle = IntPtr.Zero;  
    return GetForegroundWindow();  
}

Then get the window position with GetWindowRect.

[DllImport("user32.dll")]  
[return: MarshalAs(UnmanagedType.Bool)]  
static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);  

[StructLayout(LayoutKind.Sequential)]  
public struct RECT  
{
    public int Left;        // x position of upper-left corner  
    public int Top;         // y position of upper-left corner  
    public int Right;       // x position of lower-right corner  
    public int Bottom;      // y position of lower-right corner  
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C# Windows 窗体置于另一个窗口的中心 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • SonarQube 和 BitBucket 在 Pull 请求上集成

    我是 BitBucket 的新手 继承了一个项目 现在正在尝试加快速度并完成代码 我们有一个 DevSecOps 管道 使用 BitBucket 作为 SCM SonarQube 作为静态分析引擎以及 Maven 或 Jenkins 具体取
  • 指南是否保证是唯一的?

    我使用 Guid 作为数据库中的主键 想知道是否有可能生成重复的 Guid 指南是否保证是唯一的 虽然不能保证每个生成的 GUID 都是唯一的 但唯一键的总数 2 128 或 3 4 10 38 非常大 因此相同数字生成两次的概率非常小 例
  • 错误:异步模块或处理程序已完成,而异步操作仍处于挂起状态

    我有一个控制器操作方法来保存用户详细信息 如下所示 public async Task
  • 如何从sklearn管道变压器中提取特征名称?

    以供参考 Python 3 8 3 sklearn 1 0 2 我有一个scikit learn pipeline为我格式化一些数据 如下所述 我定义我的pipeline像这样 Pipeline 1 cat selector make co
  • Cassandra 性能随时间更新行

    我正在尝试确定 Cassandra 是否适合我的应用程序 因为未知我们将来需要扩展多少并且可能会迅速发生 我一直在观看 2013 年 C 峰会的各个部分 具体来说 Axel Liljencrantz Spotify 的后端开发人员 在这里说
  • 使用 ASP.NET Core 将 PDF 返回到浏览器

    我在 ASP Net core 中创建了 Web API 以返回 PDF 这是我的代码 public HttpResponseMessage Get int id var response new HttpResponseMessage S
  • 如何编写标准 CSV

    读起来非常简单标准 CSV文件 例如 val t spark read format csv option inferSchema true option header true load file home xyz user t csv
  • 如何加快 R 中的包/库加载时间?

    我有一个run stat r可以在命令行中运行的脚本 例如Rscript anova r在我的 ubuntu 服务器上 load package library ez run code 问题是加载时间ez打包需要2 3秒 R 是否可以预加载
  • 在 POSIX C 中获取自己的外部 IP 地址

    我希望获得自己的 IP 地址 以便将该信息发布到对等网络中 在 POSIX C 中我们有getaddrinfo NULL 但这似乎总是返回INADDR ANY or INADDR LOOPBACK 这对我来说没用 有什么建议么 问题之一是
  • 通过反射添加和删除事件处理程序 C#

    再会 我的目的是实现允许我们订阅和取消订阅对象事件的类 这是我班级的代码 public static class EventSubscriber public static void AddEventHandler EventInfo ev
  • 如何理解WinDBG SOS中!dumpheap的-min/-max选项

    文档说它用于限制输出对象的大小 但根据我的测试 这不是我所期望的 0 000 gt dumpheap mt 000007fee12406a8 max 400 min 399 Address MT Size 000000000d1dc1f8
  • 在 Scala 中,构造函数如何引用它正在创建的对象?

    我想在 Scala 中实现一个基于原型的系统 类型层次结构的根部是 ROOT 节点 它有一个引用自身的原型 以下代码演示了我正在尝试执行的操作 class Node val prototype Node private def this t
  • 解释回归模型中的交互作用

    我希望这是一个简单的问题 我有一个实验设计 测量两组的一些反应 比方说血压 对照组和受影响组 两组都接受三种治疗 t1 t2 t3 数据在任何意义上都不是配对的 这是一个示例数据 set seed 1 df lt data frame re
  • JavaScript 三元运算符速记

    我知道在 PHP 5 3 中不再使用这种冗余的三元运算符语法 startingNum startingNum startingNum 1 我们可以在适用的情况下为三元运算符使用简写语法 startingNum startingNum 1 我
  • VBA 将多个工作表导入工作簿

    我有以下代码 它允许我选择一个文件并从中导入 笔 选项卡 但是我想选择多个文件 我希望能够从多个工作簿中选择 笔 选项卡 每个工作簿在合并工作簿中都有自己的选项卡 您能帮忙看看这如何运作吗 我认为这可能需要使用 For Each 函数 但不
  • Python 中浮点数的余数[重复]

    这个问题在这里已经有答案了 我只是想给大家展示一下python中的运算结果 我无法解释 gt gt gt 1 0 1 0 0 0 OK gt gt gt 1 0 0 1 0 09999 gt gt gt 1 0 0 001 0 00999
  • 为什么 instanceof 对 babel-node 下的 Error 子类实例不起作用?

    我看到instanceof运算符不适用于以下实例Error子类 当运行在babel 节点OS X 上的版本 6 1 18 Node 版本 5 1 0 这是为什么 相同的代码在浏览器中运行良好 试试我的fiddle举个例子 以下代码输出tru
  • 如何使用 C# 将 JSON 发布到服务器?

    这是我正在使用的代码 create a request HttpWebRequest request HttpWebRequest WebRequest Create url request KeepAlive false request
  • SIGINT 处理和 getline

    我写了这个简单的程序 void sig ha int signum cout lt lt received SIGINT n int main string name struct sigaction newact old newact s
  • 将 C# Windows 窗体置于另一个窗口的中心

    我希望我的表单在相对于调用我的表单时处于活动状态的窗口的中心启动并打开 假设如果 Firefox 处于活动状态并且我显示表单 我希望我的表单显示在 Firefox 窗口的 中心 我认为实现此目的的一种方法是使用 user32 dll 中的