Закрытие определенной WinForm? - PullRequest
0 голосов
/ 13 июля 2010

Допустим, я открываю форму следующим образом:

FormSomething FormSomething = new FormSomething(SomethingId);
FormSomething.Show();

В моем коде есть возможность открытия многих FormSomething одновременно. Как закрыть конкретный экземпляр FormSomething?

Каждый экземпляр FormSomething имеет идентификатор, связанный с ним.

Редактировать: Я думаю, что я действительно пытаюсь получить возможность 10000 * внешне закрыть конкретный экземпляр FormSomething.

Буду очень признателен за любые советы! : D

Ответы [ 2 ]

3 голосов
/ 13 июля 2010

В классе Form есть метод Close, который вы можете вызывать.

Похоже, вам просто нужно сохранить список форм, которые вы открыли, чтобы вы могли обратиться к ним позже:

    List<FormSomthing> _SomethingForms = new List<FormSomething>();

    void DisplaySomething()
    {
        FormSomething FormSomething = new FormSomething(SomethingId);
        _SomethingForms.Add(FormSomething);
        FormSomething.Show();
    }

    void CloseThatSucka(int somethingId)
    {
        // You might as well use a Dictionary instead of a List (unless you just hate dictionaries...)
        var form = _SomethingForms.Find(frm => frm.SomethingId == somethingId);
        if(form != null)
        {
            form.Close();
            _SomethingForms.Remove(form);
        }
    }
2 голосов
/ 13 июля 2010

Просто следите за ними.Словарь - это естественный объект коллекции.Например:

    Dictionary<int, Form2> instances = new Dictionary<int, Form2>();

    public void OpenForm(int id) {
        if (instances.ContainsKey(id)) {
            var frm = instances[id];
            frm.WindowState = FormWindowState.Normal;
            frm.Focus();
        }
        else {
            var frm = new Form2(id);
            instances.Add(id, frm);
            frm.FormClosed += delegate { instances.Remove(id); };
            frm.Show();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...