Я написал C# программу, которая полностью работает в Form1 и прекрасно работает. Программа крошечная, с ограниченными функциональными возможностями, но я хочу создавать более крупные программы и делать вещи более организованными. Пока другие классы не взаимодействуют с пользовательским интерфейсом, все работает нормально. Но вещи go не так, когда я пытаюсь изменить что-то на GUI из другого класса.
После дня поисков и попыток я застрял.
Я создал крошечную тестовую программу с одной меткой, и это прекрасно работает:
using System;
using System.Windows.Forms;
namespace testapp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Changelabel1();
}
public void Changelabel1()
{
label1.Text = "changedlabel1";
}
}
}
Это поменяет label1 для отображения «changelabel1». Отлично. Теперь я создал файл класса 1, добавил label2 и изменил форму Form1: Form1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Changelabel1();
}
public void Changelabel1()
{
label1.Text = "changedlabel1";
}
public string ChangeLabel2
{
get
{
return label2.Text;
}
set
{
label2.Text = value;
}
}
}
и создал Class1.cs:
class Class1
{
Form1 _mainForm;
public Class1(Form1 form)
{
_mainForm = form;
}
public void ChangeLabelText()
{
_mainForm.ChangeLabel2 = "ChangedTheTextBox2";
}
}
Первая проблема заключается в том, что я не могу Кажется, доступ к Class1.ChangeLabelText () из формы Form1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Changelabel1();
Class1.ChangeLabelText(); //This doesn't work
}
В ответ я получаю ошибку ссылки на объект. Я могу получить Class1.ChangeLabelText (), если я изменю publi c void ChangeLabelText () на publi c stati c void ChangeLabelText () в Class1, но тогда _mainform.ChangeLabel2 дает исключение ссылки на объект.
Что я здесь не так делаю?
С уважением,