как написать функцию, делающую этот код - PullRequest
1 голос
/ 08 февраля 2011

Я использовал этот код для создания и отображения формы в MdiWindow:

        if (currentForm != null) {
            currentForm.Dispose();
        }
        currentForm = new ManageCompanies();
        currentForm.MdiParent = this;
        currentForm.Show();
        currentForm.WindowState = FormWindowState.Maximized;

Я использовал этот код для отображения около 20 различных форм ...

Я хочунаписать такую ​​функцию:

private void ShowForm(formClassName) {

            if (currentForm != null) {
                currentForm.Dispose();
            }
            currentForm = new formClassName();
            currentForm.MdiParent = this;
            currentForm.Show();
            currentForm.WindowState = FormWindowState.Maximized;
}

Должен ли я отправить formClassName в виде строки или что-то еще;и как включить его в код ... хочу финальный код ...

Ответы [ 2 ]

2 голосов
/ 08 февраля 2011

Попробуйте дженерики:

 public void ShowForm<FormClass>() where FormClass: Form,new() {

        if (currentForm != null) {
            currentForm.Dispose();
        }
        currentForm = new FormClass();
        currentForm.MdiParent = this;
        currentForm.Show();
        currentForm.WindowState = FormWindowState.Maximized;
}

Или используя отражение

public void ShowForm(string formClassName) {

        if (currentForm != null) {
            currentForm.Dispose();
        }
        currentForm = (Form) Activator.CreateInstance(Type.GetType(formClassName)) ;
        currentForm.MdiParent = this;
        currentForm.Show();
        currentForm.WindowState = FormWindowState.Maximized;
}
0 голосов
/ 08 февраля 2011

Вы также должны указать:

private void ShowForm<FormClass> where T : Form, new() {

Обратите внимание на new () там, чтобы вы могли создать FormClass по умолчанию, иначе он не позволит вам создать его.

...