0

我想进入这里:

Protected override void OnResize(EventArgs e)
{

}

当我将 WindowState 更改为最大化/正常时。我该怎么做呢?

4

2 回答 2

1

为什么你特别想要那个方法?OnClientSizeChanged() 方法在 WindowState 更改时被调用,您应该能够在那里做同样的工作。

请注意,如果您实际上需要知道由于 WindowState 更改而不是用户调整窗口大小而调用了该方法,那么添加一个设置为当前 WindowState 值的私有字段非常简单,并且在 OnClientSizeChanged()方法,将该字段与实际的 WindowState 值进行比较。

例如:

private FormWindowState _lastWindowState;

protected override void OnClientSizeChanged(EventArgs e)
{
    base.OnClientSizeChanged(e);

    if (WindowState != _lastWindowState)
    {
        _lastWindowState = WindowState;

        // Do whatever work here you would have done in OnResize
    }
}
于 2014-10-16T23:24:31.070 回答
0

如果您必须使用该覆盖,您可以这样做:

protected override void OnResize(EventArgs e)
{
    if (this.WindowState == FormWindowState.Maximized || 
        this.WindowState == FormWindowState.Normal)
    {
        // Do something here
    }

    // You should probably call the base implementation too
    base.OnResize(e);

    // Note that calling base.OnResize will trigger 
    // Form1_Resize(object sender, EventArgs e)
    // which is normally where you handle resize events
}

或者,将您的代码放入 Resize 事件中(这是“正常”的做法):

private void Form1_Resize(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Maximized || 
        this.WindowState == FormWindowState.Normal)
    {
        // Do something here
    }
}
于 2014-10-17T00:03:47.363 回答