1

この主題について何時間もグーグルで調べた後、フォームの閉じるボタンだけを効果的に無効にする次のコードスニペットを見つけました。

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;
     }
}

これで、すべてのフォームに同じスニペットを書き込むのではなく、クラスの静的メソッドにパッケージ化して、どこからでも1行で分類できるようにする方法を見つけようとしています。

しかし、このスニペットもオーバーライドされたメソッドであるため、これを行う際に問題が発生しました。そのため、別の静的メソッドにどのように挿入できるかわかりません。

私は以下を試しました

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;
            }
        }
    }
}

ただし、次のエラーがスローされます:'WindowsFormsApplication1.Common.CreateParams':オーバーライドする適切なメソッドが見つかりません

私の質問は、このスニペットを再利用可能にするにはどうすればよいですか?

4

2 に答える 2

5

クラスから継承する基本クラスを作成してから、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
}
于 2012-11-06T09:03:01.560 に答える
0

C#ウィンドウフォームの[閉じる]ボタンを有効/無効/非表示にする

これを確認できます

于 2012-11-06T09:05:54.530 に答える