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
237 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир