我使用C#.net 4.0版本开发了一个Windows应用程序。
我需要从我的一个弹出窗口中删除关闭按钮。我可以通过将Control Box属性设置为false来实现。但在这种情况下,它也将删除我的图标。否则我可以禁用关闭按钮。但有没有办法只删除关闭按钮(保留图标)?
答案 0 :(得分:5)
这是一个更清洁的解决方案: - )
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中的常量,没有标志可以完全摆脱关闭的按钮。 (除非你想通过复制左边的一个部分找到一种画在按钮顶部的方法 - yuk。)
答案 1 :(得分:3)
此代码将禁用关闭按钮,但会显示图标。
在您的表单类中:
导入:
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);
}