Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何删除关闭按钮,但不删除其图标?_C#_Winforms - Fatal编程技术网

C# 如何删除关闭按钮,但不删除其图标?

C# 如何删除关闭按钮,但不删除其图标?,c#,winforms,C#,Winforms,我有一个使用C#.net 4.0版本开发的windows应用程序 我需要从弹出窗口中删除关闭按钮。我可以通过将控制框属性设置为false来实现。但在这种情况下,它也会删除我的图标。否则我可以禁用关闭按钮。但是有没有办法只删除关闭按钮(保留图标)?此代码将禁用关闭按钮,但会显示图标 在你的课堂上: 进口: using System.Runtime.InteropServices; 在主要类别中: const int MF_BYPOSITION = 0x400; [Dll

我有一个使用C#.net 4.0版本开发的windows应用程序


我需要从弹出窗口中删除关闭按钮。我可以通过将控制框属性设置为false来实现。但在这种情况下,它也会删除我的图标。否则我可以禁用关闭按钮。但是有没有办法只删除关闭按钮(保留图标)?

此代码将禁用关闭按钮,但会显示图标

在你的课堂上:

进口:

    using System.Runtime.InteropServices;
在主要类别中:

    const int MF_BYPOSITION = 0x400;

    [DllImport("User32")]
    private static extern int RemoveMenu(IntPtr hMenu, int nPosition, int wFlags);

    [DllImport("User32")]
    private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

    [DllImport("User32")]
    private static extern int GetMenuItemCount(IntPtr hWnd);
活动:

    private void Form1_Load(object sender, EventArgs e)
    {
        IntPtr hMenu = GetSystemMenu(this.Handle, false);
        int menuItemCount = GetMenuItemCount(hMenu);
        RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);
    }

这是一个更干净的解决方案:-)


根据winuser.h中的常量,没有任何标志可以完全删除关闭的按钮。(除非您想通过复制按钮左侧的一个部分来找到在按钮顶部绘制的方法-yuk。)

和的可能重复:实际上我需要删除关闭按钮,而不是删除图标。我已经浏览了上面的链接。但我找不到。请帮助您是指关闭按钮图形还是窗体图标图形?我只需要删除关闭按钮图形。图标图形应该有。谢谢。您的代码运行良好。但是我需要把关闭按钮拿掉。不禁用。谢谢,这太荒谬了。你是不是不接受我的密码给了我-15分。非常感谢。你不希望人们创建你的程序。我给你这个代码是为了让你了解一些方向。这是一个+10返回,因为我不在乎按钮是否仍然可见,但我确实需要有条件地禁用它,这让你的代码变得容易。我仍然无法找到我想要的答案。那么换一种方式吧。将controlbox设置为false隐藏图标和按钮,然后使用win32和intcept消息泵重新绘制图标。
public partial class Form1 : Form
{
    private const int CS_NOCLOSE = 0x200;
    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams mdiCp = base.CreateParams;
            mdiCp.ClassStyle = mdiCp.ClassStyle | CS_NOCLOSE;

            return mdiCp;
        }
    }

    public Form1()
    {
        InitializeComponent();
    }

}