C#用createparams同时解决窗体闪烁和无边框窗体最小化还原问题

img


对createparam这个方法,怎么能override两次。现在的情况是解决闪烁就不能解决最小化还原问题,请教一下有没有别的解决方案

下面的代码也放到上面不就行了

【以下回答由 GPT 生成】

对于同时解决窗体闪烁和无边框窗体最小化还原的问题,我有一个可能的解决方案。你可以使用双缓冲技术来减少窗体闪烁,并单独处理最小化还原的问题。

首先,让我们解决窗体闪烁的问题。你可以创建一个自定义的窗体类,继承自Form类,并重写CreateParams方法。在重写的方法中,设置DoubleBuffered属性为true,以启用双缓冲。

代码示例:

using System;
using System.Windows.Forms;

public class DoubleBufferedForm : Form
{
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;  // 设置WS_EX_COMPOSITED样式
            return cp;
        }
    }

    public DoubleBufferedForm()
    {
        DoubleBuffered = true;  // 启用双缓冲
    }
}

接下来,解决无边框窗体最小化还原的问题。你可以添加一个按钮或者其他控件来模拟最小化还原的功能。当点击该按钮时,将窗体的WindowState属性设置为FormWindowState.Minimized以最小化窗体,再次点击按钮将窗体的WindowState属性设置为FormWindowState.Normal以还原窗体。

代码示例:

private void MinimizeRestoreButton_Click(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
    {
        WindowState = FormWindowState.Normal;
    }
    else
    {
        WindowState = FormWindowState.Minimized;
    }
}

以上是一个可能的解决方案,用来同时解决窗体闪烁和无边框窗体最小化还原的问题。希望对你有所帮助!


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^