gpt4 book ai didi

c# - 设置为最大化的 WinForm 在循环中出现得太早

转载 作者:太空狗 更新时间:2023-10-30 01:23:54 26 4
gpt4 key购买 nike

表单代码:

public partial class Foo: Form
{
public Foo()
{
InitializeComponent();
}

protected override void OnLoad(EventArgs e)
{
// Form already visible here when Maximized from calling code
base.OnLoad(e);
}
}

调用代码:

Foo foo = new Foo();
foo.WindowState = FormWindowState.Maximized;
foo.ShowDialog();

当代码进入OnLoad事件时,Foo窗体已经显示在屏幕上。如果我删除 foo.WindowState = FormWindowState.Maximized 语句,则 Foo 表单在 OnLoad 事件中不可见(本应如此)。

为什么会这样,我该怎么做才能解决这个问题?问题是当表单设置为最大化时,它在循环中显示得太早。

请注意,有一个 similar问题,但它侧重于 UI 滑稽 Action ,并没有真正解决问题。

最佳答案

这类问题通常需要仔细考虑您的工作方式。可能需要重新考虑加载、绑定(bind)和显示表单的策略。但是,对于一个简单的解决方案,您可以这样做:

Foo foo = new Foo();
foo.Shown += (s, a) => foo.WindowState = FormWindowState.Maximized;
foo.ShowDialog();

这样,在引发 Shown 事件之前,您不会最大化表单,该事件发生在 OnLoad() 之后。

关于c# - 设置为最大化的 WinForm 在循环中出现得太早,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10905912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com