Дочерняя форма должна открываться только один раз - C#
Формулировка задачи:
Добрый день!
Помогите, пожалуйста разобраться.
Есть главная форма Form1, на ней есть кнопка "Открыть вторую форму". В проект добавлена еще одна форма Form2. В обработчике событий кнопки главной формы пишу:
Т.е. f2 является дочерчей формой Form1. При нажатии на кнопку отображается сколько угодно f2. Как ограничить появление дочерней формы только одним экземпляром?
Заранее благодарен!
private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.MdiParent = this; f2.Show(); }
Решение задачи: «Дочерняя форма должна открываться только один раз»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace daniweb.mdi { public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private Form OpenForm(Type t) { if (!t.IsSubclassOf(typeof(Form)) && !(t == typeof(Form))) throw new ArgumentException("Type is not a form", "t"); List<Form> lst = new List<Form>(); try { for (int i1 = 0; i1 < Application.OpenForms.Count; i1++) { Form f = Application.OpenForms[i1]; if (f.IsMdiChild) lst.Add(f); } } catch (IndexOutOfRangeException) { //This can change if they close/open a form while code is running. Just throw it away } while (lst.Count > 0) { Form f = lst[0]; f.Close(); f.Dispose(); lst.RemoveAt(0); } Form result = (Form)Activator.CreateInstance(t); result.MdiParent = this; result.Show(); return result; } private void openForm1ToolStripMenuItem_Click(object sender, EventArgs e) { frmMdi1 frm = (frmMdi1)OpenForm(typeof(frmMdi1)); frm.Text = "abc"; } private void openForm2ToolStripMenuItem_Click(object sender, EventArgs e) { frmMdi2 frm = (frmMdi2)OpenForm(typeof(frmMdi2)); frm.Text = "123"; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д