Wspólne menu dla kilku formatek

0

Witajcie,

Chciałbym osiągnąć taki scenariusz:

  1. Mam w menu przyciski "Dodaj","Edytuj", "Usuń" (menu jako usercontrol)
  2. Mam np 3 formatki ("Lista pracowników", "Lista maszyn", "Grafik") - osadzam kontrolkę z menu do tych formatek, formatki mają interfejs implementujący metody dodaj, edytuj, usuń

I jak teraz zrobić żeby zdarzenia z tych przycisków wywoływały odpowiednią formatkę (dodaj/edytuj - inny zestaw i układ kontrolek typu textedit) i usuń (zaznaczanie na gridzie rekordów do usnięcia)

Dzięki z góry za podpowiedzi :)

--
Tomek

1

Jeśli dobrze rozumiem, to chcesz osiągnąć coś takiego:


public interface IMenuInvoker
{
    void Add();
    void Modify();
    void Delete();
}

public class Menu: UserControl
{
    public IMenuInvoker MenuInvoker {get; set;}

    public void AddClicked(object sender, EventArgs e)
    {
        MenuInvoker?.Add();
    }
}

public class EmployeesForm: Form, IMenuInvoker
{
    public EmployeesForm()
    {
        InitializeControls();
        menuControl.MenuInvoker = this;
    }
}
0
Juhas napisał(a):

Jeśli dobrze rozumiem, to chcesz osiągnąć coś takiego:


public interface IMenuInvoker
{
    void Add();
    void Modify();
    void Delete();
}

public class Menu: UserControl
{
    public IMenuInvoker MenuInvoker {get; set;}

    public void AddClicked(object sender, EventArgs e)
    {
        MenuInvoker?.Add();
    }
}

public class EmployeesForm: Form, IMenuInvoker
{
    public EmployeesForm()
    {
        InitializeControls();
        menuControl.MenuInvoker = this;
    }
}

Myślę że jak najbardziej to chciałbym osiągnąć :)

Tylko gdzie teraz obsłużyć zdarzenia tych przycisków?
w klasie Menu czy w klasie EmployeesForm

bo jeśli w klasie menu to chyba tak to się robi:?

   private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)        {
            MenuInvoker?.OnAddCommand();
        }
0

W chyba wszystkich listenerach zdarzeń na świecie jest argument 'sender' który jest referencją na obiekt, z którego zdarzenie wyszło. To pozwala użyć listenera do wielu elementów GUI i nadal mieć nad tym kontrolę.

0

Przecież ja Ci dałem cały szkielet. Forma implementuje interfejs, na rzecz którego są uruchamiane elementy menu. Ty masz oprogramować implementację tego interfejsu, żeby coś dodać faktycznie, usunąć, czy zmodyfikowac.Czyli EmployeesForm ma implementować interfejs IMenuInvoker, a z kolei odpowiednie metody z tego interfejsu są uruchamiane przez menu.

0
Juhas napisał(a):

Przecież ja Ci dałem cały szkielet. Forma implementuje interfejs, na rzecz którego są uruchamiane elementy menu. Ty masz oprogramować implementację tego interfejsu, żeby coś dodać faktycznie, usunąć, czy zmodyfikowac.Czyli EmployeesForm ma implementować interfejs IMenuInvoker, a z kolei odpowiednie metody z tego interfejsu są uruchamiane przez menu.

Dziękuje,już zaimplementowałem obsługę menu w formatkach - wiedziałem że to jakoś tak ma być ale nie umiałem sobie chwilowo tego uświadomić (z przykładem - dużo łatwiej).
Dzięki raz jeszcze :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1