【发布时间】:2012-01-18 19:44:41
【问题描述】:
我的问题可能听起来很简单,但我无法在任何地方得到我正在寻找的答案。 我想为 Windows 窗体程序创建一个 登录 页面,但我不希望 窗体 具有右上角的经典按钮(最小化、最大化、关闭)。 我找不到隐藏按钮的属性。
有人知道这个的好方法吗? 提前致谢
【问题讨论】:
我的问题可能听起来很简单,但我无法在任何地方得到我正在寻找的答案。 我想为 Windows 窗体程序创建一个 登录 页面,但我不希望 窗体 具有右上角的经典按钮(最小化、最大化、关闭)。 我找不到隐藏按钮的属性。
有人知道这个的好方法吗? 提前致谢
【问题讨论】:
对于最小化和最大化按钮,只需设置这些属性(例如在构造函数中):
public Form1()
{
MaximizeBox = false;
MinimizeBox = false;
ControlBox = false;
}
【讨论】:
Form 有两个属性称为MinimizeBox 和MaximizeBox,将它们都设置为false。
关闭按钮
在构造和创建 Form 对象期间,.NET 将使用基类 CreateParams 属性中可用的默认创建参数。
事实上,CreateParams property 在 Forms.Control 类中可用。在表单类(派生自 System.Windows.Forms.Form)中,覆盖此属性并修改创建标志。要禁用关闭按钮,请使用 0x200 修改 CreateParams 的 ClassStyle 成员。
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;
}
}
【讨论】:
ControlBox = false; 就足够了。
跳出框框思考一下,您是否考虑过显示 Windows 密码对话框而不是自己编写?这样做的好处是让您的对话看起来和感觉更原生。
您可以使用CredUIPromptForCredentials API 来显示根据您的需要定制的对话框。周围有很多 C# 包装器,但如果您喜欢自己做的话,它是一个非常直接的 p/invoke。我快速的网络搜索发现了这个Stack Overflow 问题,必要的 p/invoke 工作已经完成。
【讨论】: