Как перезагрузить форму в С# при нажатии кнопки в другой форме?

c#
Вопрос: У меня есть поле со списком на моем С#, которое находится в форме с именем frmMain которая автоматически заполняется, когда я добавляю (используя кнопку button1_Click) продукт в моей настройке с именем frmSettings. Когда я нажимаю кнопку button1_Click я хочу перезагрузить frmMain для нового добавленного продукта. Я попытался использовать frmMain main = new frmMain(); main.Close();

Вопрос:

У меня есть поле со списком на моем С#, которое находится в форме с именем frmMain которая автоматически заполняется, когда я добавляю (используя кнопку button1_Click) продукт в моей настройке с именем frmSettings. Когда я нажимаю кнопку button1_Click я хочу перезагрузить frmMain для нового добавленного продукта.

Я попытался использовать

frmMain main = new frmMain(); main.Close(); main.Show();

Я знаю, что этот код настолько забавный, но он не работает. : D

Это форма окон!

РЕДАКТИРОВАТЬ

Пожалуйста, посмотрите этот образ моей программы для лучшего понимания. Это мой frmMain enter image description here

Вот как выглядят мои настройки frmSettings. Итак, как вы можете видеть, когда я нажимаю кнопку отправки, я хочу, чтобы frmMain перезагрузился, чтобы обновленное значение, которое я добавил к настройкам, будет видимым для frmMain comboBox.

enter image description here

Лучший ответ:

Обновление. Поскольку вы изменили свой вопрос, вот обновленная версия для обновления ваших продуктов.

Это ваша продукция:

private frmMain main; public frmSettings(frmMain mainForm) { main = mainForm; InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { main.AddProduct(textBox1.Text); }

Ему понадобится основная форма в конструкторе для передачи данных к нему.

И основная форма:

private frmSettings settings; private List<string> products = new List<string>(); public frmMain() { InitializeComponent(); //load products from somewhere } private void button1_Click(object sender, EventArgs e) { if (settings == null) { settings = new frmSettings(this); } settings.Show(); } private void UpdateForm() { comboBoxProducts.Items.Clear(); comboBoxProducts.Items.AddRange(products.ToArray()); //Other updates } public void AddProduct(string product) { products.Add(product); UpdateForm(); }

Затем вы можете вызывать UpdateForm() всюду по вашей форме, например, другую кнопку. В этом примере для хранения ваших продуктов используется только локальная переменная. Также есть некоторые проверки для добавления продукта, но я думаю, вы поняли, что…

Ответ №1

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

private void ReloadForm() { comboBox.ResetText(); dataGridView.Update(); //and how many controls or settings you want, just add them here } private void button1_Click(object sender, EventArgs e) { ReloadForm(); //and call that method on your button click } Ответ №2

вы хотите аннулировать форму

http://msdn.microsoft.com/en-us/library/598t492a.aspx

Ответ №3

Попробуйте этот код.

this.Refresh(); Application.Doevents(); Ответ №4

ЕСЛИ вы хотите обновить страницу из usercontrol. Здесь вы найдете примеры, в которых я amrefreshing form from usercontrol. Найдите форму, в которой эта кнопка перезагрузки. Затем вызовите Invalidify tab tab и обновите его.

Dim myForm As Form = btnAuthorise.FindForm() For Each c As Control In myForm.Controls If c.Name = «tabControlName» Then DirectCast(c, System.Windows.Forms.TabControl).Invalidate() DirectCast(c, System.Windows.Forms.TabControl).Refresh() ‘force the call to the drawitem event End If Next Ответ №5this.Refresh(); Refresh(); this.Hide(); frmScholars ss = new frmScholars(); ss.Show(); Ответ №6

Я думаю, что, вызывая frmMain_load(sender,e) когда вы нажимаете кнопку, необходимо перезагрузить форму.

Вы также можете попробовать Invalidate() форму, как сказал @Nahum.

Оцените статью
Добавить комментарий