如何删除关闭按钮,但不是它的图标
本文关键字:图标 关闭按钮 何删除 删除 | 更新日期: 2023-09-27 18:15:33
我有一个使用c# .net 4.0版本开发的windows应用程序。
我需要从我的一个弹出窗口中删除关闭按钮。我可以通过将Control Box属性设置为false来实现。但在这种情况下,它也会删除我的图标。否则我可以禁用关闭按钮。但是,是否有任何方法可以删除关闭按钮(留下图标的地方)?
这是一个更简洁的解决方案:-)
原创文章
winuser.h
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();
}
}
根据winuser.h中的常量,没有标志可以完全摆脱关闭按钮。(除非你想找到一种方法,通过在按钮的左侧复制一个部分来绘制按钮的顶部-呸)
此代码将禁用关闭按钮,但将显示图标。
在你的表单类中:
进口: 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);
}