Я уже некоторое время работаю над заданием с формами, и все работает, однако мой профессор хочет, чтобы мы разделили все на отдельные классы.
Итак, что у меня сейчас есть:
MainForm.cs
MainForm.Designer.cs
MainForm.resx
program.cs
В MainForm.cs у меня есть весь мой код и откуда я вызываю кнопки, метки, текстовые поля и т. д. Я хочу создать структуру с другими классами, такими как
MainForm.cs
MainForm.Designer.cs
MainForm.resx
program.cs
class1.cs
class2.cs
Я попытался сделать это, но из моего class1 я не мог вызвать Дизайн (имя) формы, поскольку он не существует в контексте. Я много искал, но не нашел ничего, что соответствовало бы моей проблеме или способам ее решения. Как я могу решить эту проблему?





Чтобы любое свойство было доступно из другого класса (другая форма, например, поскольку Form сам является классом), свойство должно быть общедоступным, например, допустим, у вас есть текстовое поле с именем txtSomething, и вам нужно получить доступ к его тексту, вы можете создать публичное свойство, которое позволяет вам получить и установить его свойство Text:
public string SomeProperty { get { return txtSomething.Text;} set {txtSomething.Text = value;}}
Вы, конечно, можете изменить MainForm.Designer.cs и сделать все элементы управления (например, текстовые поля) общедоступными там, где они определены, но это совсем не лучший выбор. потому что вы всегда должны предоставлять общий доступ только туда, где это необходимо. например, если вам нужен текст элемента управления, пусть будет доступно только его свойство text (код выше).
Даже если вторая форма должна просто получить значение текстового поля и ее нужно установить, вы можете предоставить доступ только для чтения. поэтому приведенный выше код будет:
public string SomeProperty { get { return txtSomething.Text;} }
Затем, предполагая, что экземпляром FrmMain является frmMain, вы можете получить доступ к свойству Text этого текстового поля, например:
string propertyValue = frmMain.SomeProperty;
Интересно, почитал немного и разобрался. Спасибо за ваш ответ!