每当WindowState在C#中发生变化时,如何触发某些内容?

Jon*_*Jon 13 c# windowstate

所以我想立即,因为程序的这部分依赖于速度,当我的主窗体中的windowstate被更改时触发一个函数.我需要它是这样的:

private void goButton_Click(object sender, EventArgs e)
{
   //Code
}
Run Code Online (Sandbox Code Playgroud)

我检查了表单的事件选项卡,我没有WindowStateChanged等.我该怎么做?

表单将重新调整大小,因此检查大小更改时将无效.

Ree*_*sey 23

调整大小事件(或SizeChanged将时将WindowState改变)将闪光.


另外,WPF确实直接包含了StateChanged事件.


Nis*_*sim 7

我希望我参加派对还不算太晚。

我选择的实现方式非常简单,不需要分配全局变量,只需检查调用WindowState前后表单的值base.WndProc

    protected override void WndProc(ref Message m)
    {
        FormWindowState org = this.WindowState;
        base.WndProc(ref m);
        if (this.WindowState != org)
            this.OnFormWindowStateChanged(EventArgs.Empty);
    }

    protected virtual void OnFormWindowStateChanged(EventArgs e)
    {
        // Do your stuff
    }
Run Code Online (Sandbox Code Playgroud)

底线 - 它有效。