Windows Forms, как мне достучаться до элементов формы с другого класса? Допустим у меня есть вот такой Методpublic async void Updated()
{
if (!string.IsNullOrEmpty(UpdateMagazinTB.Text) && !string.IsNullOrWhiteSpace(UpdateMagazinTB.Text) &&
!string.IsNullOrEmpty(StoreNameTB.Text) && !string.IsNullOrWhiteSpace(StoreNameTB.Text))
{
SqlCommand sqlCommand = new SqlCommand("UPDATE [Stores] SET [StoreName]=@Name WHERE [StoresId]=@Id", sqlConnection);
sqlCommand.Parameters.AddWithValue("Id", UpdateMagazinTB.Text);
sqlCommand.Parameters.AddWithValue("Name", StoreNameTB.Text);
await sqlCommand.ExecuteNonQueryAsync();
}
}
Он обновляет в базе данных информацию о Магазине по его ID.
Информация собственно берется из элемента Формы (TextBox).
Так вот, в чем суть вопроса, как я могу этот метод сделать через Интерфейс реализовав его в другом классе, после чего этот метод передать в основной класс обработчика формы?
Я как уже не пробовал делать, что только не придумывал, но все стопорится на том, что из другого класса я ни как не могу достучаться до Элементов Формы (Windows Forms).
Есть ли какой то способ работать с элементами формы из других классов?

21 Авг 2019 в 07:00
198 +1
1
Ответы
1

Да, вы можете передать ссылку на элементы формы в другой класс через конструктор или свойства. Например, вы можете создать интерфейс с методом Updated() и передать ссылку на TextBox в конструкторе другого класса, который реализует этот интерфейс. Вот пример:

public interface IFormUpdater
{
void Updated();
}
public class FormUpdater : IFormUpdater
{
private TextBox UpdateMagazinTB;
private TextBox StoreNameTB;
public FormUpdater(TextBox updateMagazinTB, TextBox storeNameTB)
{
UpdateMagazinTB = updateMagazinTB;
StoreNameTB = storeNameTB;
}
public async void Updated()
{
if (!string.IsNullOrEmpty(UpdateMagazinTB.Text) && !string.IsNullOrWhiteSpace(UpdateMagazinTB.Text) &&
!string.IsNullOrEmpty(StoreNameTB.Text) && !string.IsNullOrWhiteSpace(StoreNameTB.Text))
{
// your database update logic here
}
}
}

Затем в основном классе обработчика формы вы можете создать экземпляр класса FormUpdater и передать ссылки на TextBox:

public partial class MainForm : Form
{
private FormUpdater _formUpdater;
public MainForm()
{
InitializeComponent();
_formUpdater = new FormUpdater(UpdateMagazinTB, StoreNameTB);
}
private void UpdateButton_Click(object sender, EventArgs e)
{
_formUpdater.Updated();
}
}

Таким образом, у вас будет доступ к элементам формы из другого класса через передачу ссылок на эти элементы.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир