Измените задний цвет, который существует в другой форме

#c#

Вопрос:

Здравствуйте, я пытаюсь изменить квадратный цвет pnlPlayer в PlayingField.cs, однако выбор должен существовать в ColorChoice.cs

Всякий раз, когда я пытаюсь изменить pnlPlayer.Обратный цвет к другому цвету pnlPlayer сообщает мне, что он не существует в текущем контексте.

как я могу изменить задний цвет pnlPlayer, который существует в игровом поле, из ColorChoice

Вот соответствующий код.

ColorChoice.cs

  private void ColorChoice_Load(object sender, EventArgs e)
 {
     //set colors to combobox
     //ComboBox ColorComboBox = new ComboBox();
     ColorComboBox.Items.Add("Red");
     ColorComboBox.Items.Add("Blue");
     ColorComboBox.Items.Add("Green");
     ColorComboBox.Items.Add("Black");

     //add to combobox form
     this.Controls.Add(ColorComboBox);
 }

public void ColorConfirm_Click(object sender, EventArgs e)
{
    PlayingField PF = new PlayingField();
    PF.Show();
    switch (ColorComboBox.SelectedIndex)
    {
        case 1:
            pnlPlayer.BackColor = Color.Red; //The problems are here
            break;
        case 2:
            pnlPlayer.BackColor = Color.Blue; //The problems are here
            break;
        case 3:
            pnlPlayer.BackColor = Color.Green; //The problems are here
            break;
        case 4:
            pnlPlayer.BackColor = Color.Black; //The problems are here
            break;

    }
 

Игровое поле.cs

 public PlayingField()
{
        InitializeComponent();
        StartGame();
}

public void StartGame()
{
    pnlPlayer.Location = new Point(200, 200);
}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.J || e.KeyCode == Keys.Left) //LEFT
    {
        int newX = (pnlPlayer.Location.X - 10 >= 0) ? pnlPlayer.Location.X - 10 : 0;
        pnlPlayer.Location = new Point(newX, pnlPlayer.Location.Y);
    }
    else if (e.KeyCode == Keys.I || e.KeyCode == Keys.Up) //UP
    {
        int newY = (pnlPlayer.Location.Y - 10 >= 0) ? pnlPlayer.Location.Y - 10 : 0;
        pnlPlayer.Location = new Point(pnlPlayer.Location.X, newY);
    }
    else if (e.KeyCode == Keys.L || e.KeyCode == Keys.Right) //RIGHT
    {
        int newX = (pnlPlayer.Location.X   10 <= 400) ? pnlPlayer.Location.X   10 : 400;
        pnlPlayer.Location = new Point(newX, pnlPlayer.Location.Y);
    }
    else if (e.KeyCode == Keys.K || e.KeyCode == Keys.Down) //DOWN
    {
        int newY = (pnlPlayer.Location.Y   10 <= 400) ? pnlPlayer.Location.Y   10 : 400;
        pnlPlayer.Location = new Point(pnlPlayer.Location.X, newY);
    }
    else return;    //user pressed a key that does not have a function in the program

}
 

Комментарии:

1. Очевидно, pnlPlayer что в опубликованном коде нет определения. Я могу только догадываться , что он существует в PlayingField объекте PF , и если pnlPlayer есть public , то PF.pnlPlayer.Backcolor… должен работать.

2. Какую технологию/структуру пользовательского интерфейса вы используете — WinForms, Unity, WPF, ….?