gpt4 book ai didi

vb.net - 从标题栏直观地删除/禁用关闭按钮 .NET

转载 作者:行者123 更新时间:2023-12-03 02:52:10 25 4
gpt4 key购买 nike

我被要求从 VB .NET 2005 MDI 应用程序中删除或禁用关闭按钮。表单上没有允许您将关闭按钮灰显的 native 属性,这样用户就无法关闭它,而且我不记得在表单类中看到过任何允许我执行此操作的内容。

是否需要在 .NET 2005 或更高版本中设置 API 调用或某些神奇属性或调用函数来执行此操作?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

更多信息:

我需要维护最小化/最大化功能

我需要保留原来的标题栏,因为表单的绘制方法已经很复杂了。

最佳答案

根据您添加到问题中的最新信息,跳至我的答案末尾。

<小时/>

这就是您需要设置为 false 的内容:Form.ControlBox Property

但是,您将失去最小化和最大化按钮以及应用程序菜单(左上角)。

作为替代方案,重写 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);
}
<小时/>

如果这些解决方案都 Not Acceptable ,并且您必须仅禁用关闭按钮,则可以采用 pinvoke/createparams 路线:

How to disable close button from window form using .NET application

这是 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

关于vb.net - 从标题栏直观地删除/禁用关闭按钮 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1743433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com