Установка свойств значений формы из другого класса

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

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

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 я не мог вызвать Дизайн (имя) формы, поскольку он не существует в контексте. Я много искал, но не нашел ничего, что соответствовало бы моей проблеме или способам ее решения. Как я могу решить эту проблему?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы любое свойство было доступно из другого класса (другая форма, например, поскольку 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;

Интересно, почитал немного и разобрался. Спасибо за ваш ответ!

Philip Carlsson 28.10.2018 22:34

Другие вопросы по теме