我想进入这里:
Protected override void OnResize(EventArgs e)
{
}
当我将 WindowState 更改为最大化/正常时。我该怎么做呢?
我想进入这里:
Protected override void OnResize(EventArgs e)
{
}
当我将 WindowState 更改为最大化/正常时。我该怎么做呢?
为什么你特别想要那个方法?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
}
}
如果您必须使用该覆盖,您可以这样做:
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
}
}