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が含まれているかもしれません。このような場合、 (.NET の標準クラス)から現在のフォームをすべて継承することはできません。次のように、からすべてのフォームを継承する必要があります。PropertiesMethodsEvent handlersFormCurrentForm

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