Как получить активные объекты формы в C #? - PullRequest
0 голосов
/ 20 августа 2011

Что я хочу сделать, так это то, что если я щелкаю по меню основной формы (MDI), не создайте новый объект указанной формы в этом меню, если форма уже открыта.Пожалуйста, помогите.

Ответы [ 4 ]

1 голос
/ 20 августа 2011

Вам нужно где-то хранить ссылку на открытую форму (возможно, поле), и если она установлена, не создавать новый экземпляр.

Псевдокод:

// a field
Form myForm;

// In the method where you would normally instantiate the form:
if (myForm == null)
   myForm = new MyForm();

myForm.Show();
0 голосов
/ 20 августа 2011

Создайте один объект вашей начальной формы, как показано ниже: Form1;

в вашем меню. Нажмите кнопку Handler, проверьте экземпляр формы liek

if(frm ==null)
   frm = new Form1();

ок, мы получили новую форму Form1,теперь мы можем показать форму.

use frm.Show() 
or 
frm.ShowDialog();

условие: если вы используете frm.Close ();затем используйте потребность создать объект и покажите его, если вы используете frm.hide ();

просто используйте frm.show ();

0 голосов
/ 20 августа 2011


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

private void button1_Click(object sender, EventArgs e)
{
    foreach (Form form in Application.OpenForms) 
    {
       if (form is FormTypeToOpen ) 
            return;
     }

     FormTypeToOpen newForm = new FormTypeToOpen();
     this.newForm .Show();
     this.newForm.BringToFront();
     this.newForm.Focus();
}

С наилучшими пожеланиями,
Йордан

0 голосов
/ 20 августа 2011

Образец:

     private void buttonUnits_Click(object sender, EventArgs e)
            {

                if (this.unitsForm == null)
                {
                    this.unitsForm = new UnitsForm();
                    this.unitsForm.MdiParent = this;

                    this.unitsForm.Disposed += new EventHandler(unitsForm_Disposed);
                    this.unitsForm.Dock = DockStyle.Fill;

                }

                this.unitsForm.Show();
                this.unitsForm.BringToFront();
                this.unitsForm.Focus();
            }

 void unitsForm_Disposed(object sender, EventArgs e)
        {
            this.unitsForm = null;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...