3

在我所有的 C# 表单上,我都有以下代码:

protected override CreateParams CreateParams
{
    get
    {
        const int WS_EX_TOOLWINDOW = 0x80;

        CreateParams cp = base.CreateParams;
        cp.ExStyle |= WS_EX_TOOLWINDOW;
        return cp;
    }
}

我将如何从我的每个表单中删除它并保持我的代码干净?

4

3 回答 3

8

Form继承和覆盖整个CreateParams属性的基类呢?然后,其余的具体形式继承你的CustomForm.

您的应用程序中的任何表单都将共享此CreateParams实现,如果其中一些需要特定实现,则具体类中的覆盖就足够了!;)

于 2013-08-08T07:20:47.780 回答
4

创建一个具有此属性的基类,并让您的所有表单都继承自它。例如:

public class BaseForm : Form 
{
    protected override CreateParams CreateParams 
    {
        get { … }
    }
}

public class MyForm1 : BaseForm { … }
public class MyForm2 : BaseForm { … }
于 2013-08-08T07:20:57.360 回答
0

我想您当前的表格类型为CurrentForm. 看起来您不想更改 中的代码CurrentForm,因为如果您想这样做,只需删除该行即可cp.ExStyle |= 0x80;。您CurrentForm可能还包含许多其他Properties, Methods, Event handlers, ... 应该被继承。在这种情况下,我们不能从Form(.NET 中的标准类)继承所有当前表单。我们应该从以下继承所有表单CurrentForm

public class MediumForm : CurrentForm {
   protected override CreateParams CreateParams
   {
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle &= ~0x80;
        return cp;
    }
   }
}
于 2013-08-08T07:24:50.253 回答