Wspólne menu dla kilku formatek

Odpowiedz Nowy wątek
2019-05-13 12:58
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

Pozostało 580 znaków

2019-05-14 11:41
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;
    }
}

Pozostało 580 znaków

2019-05-14 12:26
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();
        }

Pozostało 580 znaków

2019-05-14 14:05
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ę.

To jak by kolega podpowiedział jak prościej można to zrobić? - Tomasz Marzoch 2019-05-15 10:35

Pozostało 580 znaków

2019-05-15 10:46
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.

Pozostało 580 znaków

2019-05-15 10:56
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 :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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