Установка свойств значений формы из другого класса - PullRequest
0 голосов
/ 28 октября 2018

Я уже некоторое время работаю над заданием с формами, и все работает, однако мой профессор хочет, чтобы мы разделили все на отдельные классы.

Итак, что у меня сейчас есть:

MainForm.cs
  MainForm.Designer.cs
  MainForm.resx
program.cs

В MainForm.cs - где у меня есть весь мой код, и откуда я вызываю кнопки, метки, текстовые поля и т. Д.Что я хочу сделать, так это иметь структуру с другими классами, такими как

MainForm.cs
  MainForm.Designer.cs
  MainForm.resx
program.cs
class1.cs
class2.cs

. Я пытался сделать это, но из своего класса 1 я не мог назвать дизайн (имя) формы, так как она несуществовать в контексте.Я много искал, но не нашел ничего, что соответствовало бы моей проблеме или способам ее решения.Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 28 октября 2018

Для того чтобы любое свойство было доступно из другого класса (другая форма, например, Form сама является классом), свойство должно быть открытым, например, скажем, у вас есть текстовое поле с именем txtSomething, и вам нужноПолучив доступ к его тексту, вы можете создать открытое свойство, которое позволит вам получить и установить его свойство Text:

public string SomeProperty { get { return txtSomething.Text;} set {txtSomething.Text = value;}}

Конечно, вы можете изменить MainForm.Designer.cs и сделать все элементы управления (например, текстовые поля) общедоступными, гдеони определены, но это не очень хороший выбор.потому что вы всегда должны предоставлять публичный доступ только там, где это необходимо.например, если вам нужен элемент управления текстом, пусть будет доступно только его текстовое свойство (код выше).

Даже если вторая форма просто получает значение текстового поля и нуждается в его установке, вы можетедать доступ только для чтения.поэтому приведенный выше код будет выглядеть следующим образом:

public string SomeProperty { get { return txtSomething.Text;} }

Затем, предположив, что экземпляр FrmMain равен frmMain, вы можете получить доступ к свойству Text этого текстового поля, например:

string propertyValue = frmMain.SomeProperty;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...