Передача Forms параметра и вызов его событий - PullRequest
0 голосов
/ 22 мая 2018

MDIParent (frmMain) форма - это главное окно с полосой меню с 3 пунктами меню, а именно, frmSales, frmProducts, frmCustomers.каждая из них является формой, которую мне нужно называть модальной, а не создавать экземпляр каждый раз, когда она вызывается.Я успешно сделал это, однако я хотел бы создать метод, который принимает имя формы в качестве параметра, но мне также нужно вызвать соответствующее событие FormClose для любой формы, которую я передаю в него.

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

Следующее набрано в блокноте из памяти, поэтому могут быть некоторые ошибки, но вы все равно поймете:

frmSales SalesForm;
frmProducts ProductsForm;
frmCustomers CustormersForm;

private void ShowChildFormModal (Form myFormName)
{
    if(myFormName = null)
    {
        myFormName= new myFormName(); // is this correct ?
        myFormName.MDIParent = this; // referring to frMain - MDIParent

        // now i need to call the OnClosed Event for the form in the 
        // parameter so i can set it to null :
        myFormName_FormClose += EventHandler (FormClosed, EventArgs)  
        myFormName.Show()
    }
    else
    {
        myFormName.Activate();
    }
}

private void frmSales_OnClosed (object sender, EventArgs e)
{
    SalesForm = null;
}

private void frmProducts_OnClosed (object sender, EventArgs e)
{
    ProductsForm = null;
}

private void frmCustomers_OnClosed (object sender, EventArgs e)
{
    CustomersForm = null;
}

1 Ответ

0 голосов
/ 22 мая 2018

Вы можете использовать словарь с именем формы и формой их представления, как показано ниже:

SalesForm salesForm = new SalesForm();
ProuctsForm productForm = new ProuctsForm();
CustormersForm customerForm = new CustormersForm();



Dictionary <string,Form> MyForms = new Dictionary<string,Form>();

MyForms["sales"] = salesForm;

MyForms["products"] = productForm;

MyForms["customer"] = customerForm;

// Set Your properties and events you want here

private void ShowChildFormModal (string myFormName)
{
    if(myFormName = null && MyForms[myFormName] !=null)
    {       
        MyForms[myFormName].MDIParent = this; // referring to frMain - MDIParent

        MyForms[myFormName].myFormName_FormClose += EventHandler (FormClosed, EventArgs)  ;
        MyForms[myFormName].ShowModal();
    }
    else
    {
        // Else what you need to do ??
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...