Jru*_*rud 9 vb.net mdi titlebar
我被要求删除或禁用我们的VB .NET 2005 MDI应用程序中的关闭按钮.表单上没有允许您灰显关闭按钮的本机属性,因此用户无法关闭它,我不记得在表单类中看到任何允许我这样做的内容.
是否可能有一个API调用或一些神奇的属性来设置或运行.NET 2005或更高版本来执行此操作?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更多信息:
我需要保持最小化/最大化功能
我需要维护原始标题栏,因为表单的绘图方法已经非常复杂.
Phi*_*ace 28
根据您添加到问题中的最新信息,跳到我的答案结尾.
这是您需要设置为false: Form.ControlBox属性
但是,您将丢失最小化和最大化按钮以及应用程序菜单(左上角).
作为替代方法,重写OnClose并将Cancel设置为true(C#示例):
protected override void OnFormClosing(FormClosingEventArgs e)
{
if (e.CloseReason != CloseReason.WindowsShutDown && e.CloseReason != CloseReason.ApplicationExitCall)
{
e.Cancel = true;
}
base.OnFormClosing(e);
}
Run Code Online (Sandbox Code Playgroud)
如果这些解决方案都不可接受,并且您必须仅禁用关闭按钮,则可以使用pinvoke/createparams路径:
这是jdm代码的VB版本:
Private Const CP_NOCLOSE_BUTTON As Integer = &H200
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim myCp As CreateParams = MyBase.CreateParams
myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON
Return myCp
End Get
End Property
Run Code Online (Sandbox Code Playgroud)
jdm*_*jdm 10
您可以通过更改窗口的"类样式"来禁用系统菜单中的关闭按钮和关闭菜单项.将以下代码添加到您的表单:
const int CS_NOCLOSE = 0x200;
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CS_NOCLOSE;
return cp;
}
}
Run Code Online (Sandbox Code Playgroud)
这不仅会阻止窗口关闭,而且实际上会使按钮灰显.它是C#,但我认为将它翻译成VB应该很容易.
小智 7
这是一种删除关闭按钮的简单方法:
1.选择表单
2.现在转到Properties
.
3.查找ControlBox
并更改值False
.
这将删除所有控制按钮(例如最小化,最大化,退出)以及标题前左下角的图标.
归档时间: |
|
查看次数: |
79795 次 |
最近记录: |