У меня есть метка в Form1, которую я пытаюсь изменить. Вот мой код:Создание объекта Form1 вызывает переполнение стека
namespace asst5
{
public partial class Form1 : Form
{
Robot robot1 = new Robot();
public Form1()
{
InitializeComponent();
label2.Location = new Point(100,100);
label1.Text = label2.Location.ToString();
}
private void button7_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
label2.Text = "↑";
robot1.direction = 1;
}
private void button2_Click(object sender, EventArgs e)
{
label2.Text = "↓";
robot1.direction = 2;
}
private void east_Click(object sender, EventArgs e)
{
label2.Text = "→";
robot1.direction = 4;
}
private void west_Click(object sender, EventArgs e)
{
label2.Text = "←";
robot1.direction = 3;
}
private void button6_Click(object sender, EventArgs e)
{
robot1.speed = 1;
robot1.move();
}
private void button5_Click(object sender, EventArgs e)
{
robot1.speed = 10;
robot1.move();
}
}
public class Robot
{
Form1 frm1 = new Form1();
public int direction = 1; //1 = north, 2 = south, 3 = west, 4 = east
public int speed = 1;
public void move()
{
if (direction == 1)
{
frm1.label2.Location = new Point(frm1.label2.Location.Y - speed);
}
if (direction == 2)
{
frm1.label2.Location = new Point(frm1.label2.Location.Y + speed);
}
if (direction == 3)
{
frm1.label2.Location = new Point(frm1.label2.Location.X - speed);
}
if (direction == 4)
{
frm1.label2.Location = new Point(frm1.label2.Location.X + speed);
}
}
}
}
Form1 frm1 = new Form1(); где происходит переполнение стека. Я уверен, что это не правильный способ сделать это, но когда я пытаюсь иначе, он говорит мне: «Ссылка на объект требуется для нестатического поля».
случайный комментарий для обзора кода: вместо создания экземпляра новой точки для перемещения меток рассмотрим только изменение оси существующей точки, например: 'frm1.label 2.Location.Y - = speed; ' –
Пробовал это, он утверждает, что это не переменная. «Невозможно изменить возвращаемое значение« System.Windows.Forms.Control.Location », потому что это не переменная». – sirhotalot