c# - 将 WindowState 设置为最大化会导致窗口出现得太早

标签 c# .net winforms resize windowstate

我读到 Load 事件应该在创建窗口句柄之后触发,但之前窗口实际上变得可见。在大多数情况下,这似乎是真的。但是,我发现当我创建一个 WindowState 属性设置为 FormWindowState.Maximized 的表单时(通过 VS 设计器,或以编程方式在构造函数中),窗口在 Load 事件触发之前变得可见。例如:

using System;
using System.Windows.Forms;

namespace MyApplication
{
    public partial class MyForm : Form
    {
        public MyForm()
        {
            InitializeComponent();
            WindowState = FormWindowState.Maximized;
        }

        protected override void OnLoad(EventArgs e)
        {
            MessageBox.Show("OnLoad - notice that the window is already visible"); 
            base.OnLoad(e);
        }
    }
}

这反过来会导致显示的窗体在窗口可见时调整其控件(在 Form.Load 事件期间布局)的大小时闪烁很多。如果我没有将状态设置为最大化,那么所有调整大小都会在窗口显示之前完成(这是我所期望的)。

我可以推迟设置 WindowState 直到 Load 事件结束,但这仍然会导致大量闪烁,因为窗口变得可见,然后所有控件调整大小。

有什么想法吗?

最佳答案

尝试将 WindowState 的更改延迟到第一个 Activated 事件触发。这适用于我在 VB.NET 中使用 VS2005 和框架 2.0。

关于c# - 将 WindowState 设置为最大化会导致窗口出现得太早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806651/

相关文章:

c# - 为已部署的 Windows 应用程序 C# 更新系统?

c# - 在网格 C# 中显示完整的日期时间

c# - 如何干净地停止运行 matlab dll 函数的 .NET 线程

c# - 为什么此音频不能在Windows Phone 7中播放?

c# - Azure 函数服务总线触发器从函数级别设置自动完成

c# - IQueryable<T>.Where() 适合表达式在哪里?

.net - 您如何在托管 C++ 中处理 IDisposable?

.net - String.Format - 整数,千位分隔符,无小数

c# - 这些构造函数中的虚拟成员调用警告是否合法?

c# - C#NAudio 3D声音