我有一个模态对话框,需要隐藏关闭(X)按钮,但我无法使用
ControlBox = false
,因为我需要保持最小化和最大化按钮。
我需要隐藏关闭按钮,有没有办法做到这一点?
非常感谢!
更新:我有权禁用它,这更简单:)谢谢大家!
答案 0 :(得分:144)
我们可以通过设置this.ControlBox=false;
答案 1 :(得分:132)
您无法隐藏它,但可以通过覆盖表单的CreateParams属性来禁用它。
private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
get
{
CreateParams myCp = base.CreateParams;
myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
return myCp;
}
}
答案 2 :(得分:24)
好吧,您可以通过删除整个系统菜单来隐藏它:
private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style &= ~WS_SYSMENU;
return cp;
}
}
当然,这样做会删除最小化和最大化按钮。
如果您保留系统菜单但删除关闭项目,则关闭按钮仍然存在但被禁用。
最后的选择是自己绘制非客户区域。这很难做对。
答案 3 :(得分:10)
答案 4 :(得分:7)
如果你真的想要隐藏它,就像在“不可见”中一样,那么你可能需要创建一个无边框表单并自己绘制标题组件。 VisualStyles库具有Windows Elements可用。您还必须重新添加重新调整表单大小或通过抓取标题栏来移动表单的功能。更不用说角落里的系统菜单了。
在大多数情况下,很难证明“关闭”按钮不可用,尤其是当您需要具有最小化功能的模态窗体时。最小化模态形式确实毫无意义。
答案 5 :(得分:2)
在您的表单的属性设置'控制框' = False但它会隐藏Minimized和Maximize。
答案 6 :(得分:1)
您可以通过更改属性部分中的FormBorderStyle或使用以下方式在构造函数中以编程方式隐藏关闭按钮:
public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}
然后创建菜单条项以退出应用程序。
欢呼声
答案 7 :(得分:-2)
如果这是一个选项,您可以设置
this.FormBorderStyle = FormBorderStyle.None;
然后重新创建最小化和最大化按钮
private void button1_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
}
private void button2_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}