WPF中控制窗口显示位置的三种方式

首先新建一个WPF工程,在主界面添加一个按钮,并给按钮添加点击事件button1_Click,然后新建一个用于测试弹出位置的窗口TestWindow。
1、在屏幕中间显示,设置window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
private void button1_Click(object sender, RoutedEventArgs e)
{
TestWindow window = new TestWindow();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.ShowDialog();
}
2、在父窗口中间显示,设置window.WindowStartupLocation = WindowStartupLocation.CenterOwner;,并指定Owner。
private void button1_Click(object sender, RoutedEventArgs e)
{
TestWindow window = new TestWindow();
window.WindowStartupLocation = WindowStartupLocation.CenterOwner;
window.Owner = this;
window.ShowDialog();
}
3、在任意位置显示,设置window.WindowStartupLocation = WindowStartupLocation.Manual;并制定窗口的Left和Top坐标。
private void button1_Click(object sender, RoutedEventArgs e)
{
TestWindow window = new TestWindow();
window.WindowStartupLocation = WindowStartupLocation.Manual;
window.Left = 0;
window.Top = 0;
window.ShowDialog();
}
### 如何设置 C# WPF 窗口打开时的显示位置 在 C# WPF 中,可以通过 `WindowStartupLocation` 属性来控制窗口启动时的位置。该属性有三个枚举值可供选择: 1. **CenterScreen**: 窗口将在整个屏幕中心显示。 2. **CenterOwner**: 如果设置了父窗口,则子窗口会在父窗口的中心显示;如果没有父窗口,则行为类似于 CenterScreen。 3. **Manual**: 需要手动指定窗口的左上角坐标 (`Left`, `Top`) 来决定其初始位置。 以下是具体实现代码示例: #### 使用 Manual 方式设置窗口位置 如果希望窗口在特定位置显示,可以将 `WindowStartupLocation` 设置为 `Manual` 并定义 `Left` 和 `Top` 的值[^1]。 ```csharp private void OpenWindowAtPosition() { TestWindow window = new TestWindow(); window.WindowStartupLocation = WindowStartupLocation.Manual; window.Left = 0; // 设置窗口左侧距离屏幕左边界的像素数 window.Top = 0; // 设置窗口顶部距离屏幕上边界的像素数 window.ShowDialog(); } ``` #### 使用 CenterScreen 或 CenterOwner 如果不关心具体的坐标,而是让窗口自动居中于屏幕或父窗口,可以选择以下两种方式之一: - **CenterScreen** ```csharp TestWindow window = new TestWindow(); window.WindowStartupLocation = WindowStartupLocation.CenterScreen; window.ShowDialog(); ``` - **CenterOwner** ```csharp TestWindow window = new TestWindow(); window.Owner = this; // 当前窗口作为父窗口 window.WindowStartupLocation = WindowStartupLocation.CenterOwner; window.ShowDialog(); ``` 以上方法分别适用于不同的场景需求。当需要精确控制窗口位置时推荐使用 `Manual` 模式,并结合实际业务逻辑动态计算 `Left` 和 `Top` 坐标的值。 ### 注意事项 对于某些复杂的应用程序架构设计(如多线程环境),可能还需要注意主线程的状态配置问题。例如,在非 STA (Single-Threaded Apartment) 模式的线程上调用 UI 组件可能会引发异常。此时应确保创建新线程用于加载 WPF 窗体实例,并将其 apartment state 设定为 STA[^4]。 ---
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值