6

ボタンが 1 つとラベルが 2 つあるフォームがあります

myCounterという別のクラスがあります

myCounter クラスが changeColor というメソッドを介してフォーム内のラベルにアクセスできるようにしたい..

このクラスでラベルを使用できるようにする方法

フォーム

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public Color colTurn
        {
            get { return lblp1Turn.BackColor; }
            set { lblp1Turn.BackColor = value; }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }

クラス

class myCounter
{
    private readonly Form1 Board;
    public myCounter(Form1 Board)
    {
        this.Board = Board;
    }

    public int turn = 0;


    public void changeColor()
    {

        if (turn == 0)
        {
            turn = 1;
            lbl

           //change color code here
        }
    }
}
4

2 に答える 2

4

とにかく、フォーム全体を2番目のクラスに渡しているようです。だから、LightStrikerが提案したことをします。すべてのアイテムのパブリック アクセサーを作成し、それを他のクラスに設定します。

public partial class Form1 : Form
    {
        private myCounter _counterClass;
        public Form1()
        {
            InitializeComponent();
        }

        public Label MyLabel1
        {
            get {return mylabel1;}
        }

        public Label MyLabel2
        {
            get {return mylabel2;}
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            _counterClass = new myCounter(this);
        }

        protected void ButtonClick(object sender, EventArgs e)
        {
            _counterClass.changeColor();
        }
    }

次に、2 番目のクラスで、ラベルにアクセスできます。

class myCounter
{
    private readonly Form1 Board;
    public myCounter(Form1 Board)
    {
        this.Board = Board;
    }

    public int turn = 0;


    public void changeColor()
    {

        if (turn == 0)
        {
            turn = 1;
            Board.MyLabel1.BackColor = Color.Red;
            Board.MyLabel2.BackColor = Color.White;
        }
        else
        {
            turn = 0;
            Board.MyLabel2.BackColor = Color.Yellow;
            Board.MyLabel1.BackColor = Color.White;
        }
    }
}

これは私が wiki マークアップ エディターで書いたコードであり、テストされていないことに注意してください。ただし、これはうまくいくはずです。

于 2012-11-05T14:02:24.627 に答える
3

このために、フォームにパブリック メソッドを作成します。

public partial class Form1 : Form{
    public void SetLabelColor(Color color){
        mylabel.BackColor = color;
    }
    //... Other code
}
于 2012-11-05T13:53:39.340 に答える