0

たくさんのフォームを使ってアプリケーションを作成していますが、必要な視覚スタイルをデザイナーから適用するのに時間がかかるため、Load()メソッドのすべてのフォームにこれらのプロパティの変更を適用するLayoutというクラスを作成しました。

      class Layout : Form
    {
        public void ApplicarLayout(Form frm)
        {
            frm.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30)))));
            foreach (Control c in frm.Controls)
            {
                if (c is TextBox)
                {
                    //Apply textBox Formatting
                }
                //Iterate through the controls in the form and add respective format
            }
        }
    }

ここまでは順調ですね。次に、すべてのフォームからこのクラスを継承し、base.AplicarLayout()メソッドを呼び出すだけでしたが、次のエラーが発生します。

Inconsistent accessibility: base class 'EntityClub_.Layout' is less accessible than class 'EntityClub_.MainAdminWindow' 

ここで私がそれをどのように行うかを見ることができます。

    public partial class MainAdminWindow : Layout
{
    public MainAdminWindow()
    {
        InitializeComponent();
    }

    public void MainAdminWindow_Load(object sender, EventArgs e)
    {
        base.ApplicarLayout(this);//ERROR HERE
    }
}

継承を使用してこれを行う方法を知っていますか?クラスをインスタンス化したくないし、layoutメソッドで各ウィンドウのコードを汚染したくない。

4

1 に答える 1

4

明示的なアクセス修飾子のない(そしてネストされていない)クラスは、であると暗示されますinternal

したがって:

class Layout : Form

..内部ですが、:

public partial class MainAdminWindow : Layout

..公開されています(明示的にそう言っているため)。レイアウトの宣言をこれに変更すると、問題が解決します。

public class Layout : Form
于 2013-01-11T02:16:35.193 に答える