小编use*_*610的帖子

将WindowState设置为Maximized会导致窗口显示得太早

我读到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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

有什么想法吗?

.net c# resize windowstate winforms

7
推荐指数
1
解决办法
9347
查看次数

标签 统计

.net ×1

c# ×1

resize ×1

windowstate ×1

winforms ×1