【问题标题】:Trigger OnResize when maximize / normal最大化/正常时触发 OnResize
【发布时间】:2014-10-16 23:18:42
【问题描述】:

我想进去:

Protected override void OnResize(EventArgs e)
{

}

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

【问题讨论】:

    标签: c# forms resize windowstate


    【解决方案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
        }
    }
    

    【讨论】:

    • 我不明白你的意思,我真的不擅长编程。但是 OnResize 里面的东西不能放在另一个函数中,所以我需要在 Maximize / Normal 时触发 OnResize。
    • 为什么不能从 OnClientSizeChanged() 调用 OnResize 中的代码?
    • 如何添加 OnClientSizeChanged()?我在活动中找不到它。
    • OnClientSizeChanged() 是基类上的一个方法。您可以通过键入以下内容覆盖它:protected override void OnClientSizeChanged(EventArgs e)
    【解决方案2】:

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

    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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多