#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, ….?