当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中禁用最小化按钮?

如何解决《如何在C#中禁用最小化按钮?》经验,为你挑选了2个好方法。

在我的应用程序中,我需要暂时灰显主窗体的最小化按钮.任何想法如何实现这一目标?我不介意对Win32 dll进行p /调用.

编辑:灰显最小化按钮将是首选解决方案,但有没有其他方法可以防止表单最小化?



1> Rob..:

我阅读了您对我的回复的评论,并为您提供了更完整的解决方案.我跑得很快,似乎有你想要的行为.而不是从Form派生你的winforms,而是派生自这个类:

using System;
using System.Windows.Forms;
using System.ComponentModel;

namespace NoMinimizeTest
{
    public class MinimizeControlForm : Form
    {
        private const int WM_SYSCOMMAND = 0x0112;
        private const int SC_MINIMIZE = 0xf020;

        protected MinimizeControlForm()
        {
            AllowMinimize = true;
        }

        protected override void WndProc(ref Message m)
        {
            if (!AllowMinimize)
            {
                if (m.Msg == WM_SYSCOMMAND)
                {
                    if (m.WParam.ToInt32() == SC_MINIMIZE)
                    {
                        m.Result = IntPtr.Zero;
                        return;
                    }
                }
            }
            base.WndProc(ref m);
        }

        [Browsable(true)]
        [Category("Behavior")]
        [Description("Specifies whether to allow the window to minimize when the minimize button and command are enabled.")]
        [DefaultValue(true)]
        public bool AllowMinimize
        {
            get;
            set;
        }
    }
}

如果您希望能够在发送点击时决定是否允许最小化,则可以执行更多操作,例如:

using System;
using System.Windows.Forms;
using System.ComponentModel;

namespace NoMinimizeTest
{
    public class MinimizeControlForm : Form
    {
        private const int WM_SYSCOMMAND = 0x0112;
        private const int SC_MINIMIZE = 0xf020;

        protected MinimizeControlForm()
        {

        }

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_SYSCOMMAND)
            {
                if (m.WParam.ToInt32() == SC_MINIMIZE && !CheckMinimizingAllowed())
                {
                    m.Result = IntPtr.Zero;
                    return;
                }
            }
            base.WndProc(ref m);
        }

        private bool CheckMinimizingAllowed()
        {
            CancelEventArgs args = new CancelEventArgs(false);
            OnMinimizing(args);
            return !args.Cancel;
        }

        [Browsable(true)]
        [Category("Behavior")]
        [Description("Allows a listener to prevent a window from being minimized.")]
        public event CancelEventHandler Minimizing;

        protected virtual void OnMinimizing(CancelEventArgs e)
        {
            if (Minimizing != null)
                Minimizing(this, e);
        }
    }
}

有关此窗口通知的详细信息,请参阅有关它的MSDN文章.



2> Coincoin..:
form.MinimizeBox = false;

或者如果在表格范围内

MinimizeBox = false;


取决于您的Windows主题.如果启用了最小化按钮,则会获得一个图像.如果禁用,您将获得不同的图像.那个图像可能什么都没有,所以你甚至看不到一个肮脏的按钮.
推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有