经过几个小时的谷歌搜索这个主题后,我发现以下代码片段有效地仅禁用了表单的关闭按钮。
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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我不再只是在每种形式中编写相同的代码片段,而是尝试找出一种方法将其打包到可能的类的静态方法中,以便我可以从任何地方仅用一行代码对其进行分类。
但我在这样做时遇到了一个问题,因为这个代码片段也是一个被重写的方法,因此我不知道如何将它放入另一个静态方法中。
我尝试了以下方法
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public class Common
{
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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它会引发此错误:“WindowsFormsApplication1.Common.CreateParams”:找不到合适的方法来覆盖
我的问题是如何使这个片段可重用?
创建一个从该类继承的基类Form,然后使所有表单都从该类继承。
public class BaseForm : Form
{
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;
}
}
}
public partial class Form1 : BaseForm
{
//your form code
}
Run Code Online (Sandbox Code Playgroud)