Łączenie menu z kilku projektów

0

Mając projekt - formę główną która jest uruchamiana jako pierwsza z całej solucji i w formie ribbona oraz kilka projektów dodatkowych i również w ich formach głównych menu jak je wszystkie połączyć tak aby przy starcie programu na głównej formie w menu mieć je wszystkie jako kolejne zakładki ??

Z góry dzięki za pomoc :)

0

solucja

projekt 1 ( główny ) w nim forma +ribbon (menu1) - Informacje które dzielą się autor i o programie)
projekt 2 forma z menu (kartoteki które dzielą się na pracownicy, użytkownicy)
projekt 3 forma z menu (działy które dzielą się na finansowy, kadry)

chciałbym jak się skompiluje program i dopali się okno główne z projektu 1 to żeby w nim pojawiły się zakładki z pozostałych projektów (najlepiej z wszystkich projektów bo może jakiś kiedyś dojść oraz menu)

to żeby menu wyglądało

1 wstążka                            2 wstążka                                      3 wstążka

Informacje | kartoteki | działy |
auto | o programie | pracownicy | użytkownicy | finansowy | kadry

0

Utwórz normalne menu, w których po zdarzeniu kliknięcia myszy wyświetli się określony panel w formie kontrolki użytkownika. Panele te dodaj do głównej formy i odpowiednio wyświetlaj/schowaj.

0

takie rzeczy to się robi przez pluginy i ręczne tworzenie menu w kodzie

0

Kolego abrakadaber a mógłbyś to rozwinąć temat pluginów i jak w nich stworzyć menu ? bardzo mnie nurtuje ten temat bo w przyszłości dany projekt mógłbym z łatwością przenieść do innej solucji np projekt w którym będę miał tak zwane zródło (core) dla calej solucji w której będę miał różne klasy wykorzystywane w projektach ??

może jakiś przykład lub pomocne linki ?

0

tu masz o pluginach https://www.google.pl/search?q=c%23+plugin+framework o tworzeniu ribbona w kodzie https://msdn.microsoft.com/en-us/library/bb608628.aspx

generalnie musisz zrobić tak, że plugin "mówi" aplikacji co by chciał pokazać w menu i tyle

0

Cześć,

Nie wiem czy to forms, czy wpf, w przypadku wpf-a dużo projektów korzysta z prism-a, tam masz coś takiego jak ModuleCatalog, a każdy Module (może być w osobnej dll-ce) ma metodę Initialize.

Teraz (nie korzystałem z Ribbon-a, więc nie wiem czy to się uda), viewmodel jest generowany podczas inicjalizacji modułu i dodawany do listy viewmodeli, każdą sekcję generujesz dla viewmodel z listy viewmodeli (ObservableCollection, więc możesz dodawać dynamicznie).
Czyli lista viewmodeli jest przypięta do menu, każdy viewmodel to jedna sekcja, sekcja jest widoczna jak istnieje viewmodel, każdy viewmodel zawiera listę opcji z przypiętym ICommand.

Coś takiego na szybko przyszło mi do głowy, nie wiem jednak czy korzystasz z technologii, o których pisałem wyżej. Pozdrawiam.

0

chodzi o formę, nie ma gdzieś gotowych metod lub jakiejś biblioteki która pomoże mi to zrobić ?

Edit :Sorki poprawiłem błąd

0

szczerze wątpię bo nikt nie skleja kilku aplikacji w jedną tak jak ty chcesz to zrobić - takie rzeczy (modułowość) to na etapie projektowania aplikacji się wprowadza i odpowiednie mechanizmy implementuje na początku

0

Właśnie chcę stworzyć takową aplikację w której będzie kilka projektów i chciałbym połączyć ich menu do jednego głównego ( głównej formy która jest uruchamiana przy starcie programu a w na niej menu), dla tego pytam się was i nad tym myślę

0

jakiejś jeszcze propozycje z waszej strony jak to ugryźć ? HELP ?

0

NAPISAĆ TO POPRAWNIE!!!!

0

Przepraszam jak kogoś uradziłem : piszesz abrakadaber "na etapie projektowania aplikacji się wprowadza i odpowiednie mechanizmy implementuje na początku",

Na etapie projektowania odpalam visual studio w nim kontrolki decexpress - tworzę nowy projekt z ribbonem, po jego utworzenie po prawej stronie mam zakładkę solution explorer u samej góry pisze "Solution nazwa projektu) klikam prawym klawiszem i wybieram add new project wpisuje jego nazwę również wybieram aby był z roboonem i dodaje do solucji.

Teraz mam projekt1 i projekt 2 W każdym z projektów mam Form1 a na nim ribbon i co teraz zrobić aby jak uruchamia się program z projektu 1 z ribbonem był również na nim ribbon z projektu 2 i jakie do tego mechanizmy użyć ?

1

'projektowanie' to nie chodzi tutaj o poukładanie kontrolek w oknie, tylko o zastanowienie się jak ma być zbudowana aplikacja, jaka architektura, jakie warstwy, i właśnie ten system pluginów. Musisz napisać mechanizm odpowiedzialny za dynamiczne ładowanie pluginów i używanie ich w kodzie, zastanowić się nad podziałem na klasy, narysować jakieś chociażby postawowe schematy UML.

0

Dlatego zasugerowałem użycie Microsoft.Prism, który dostarcza podstawowe mechanizmy do obsługi modułowości.

1

Tworzysz jeden projekt, w nim piszesz obsługę robbona, wszystkie rzeczy wspólne. Piszesz mechanizm dynamicznego wczytywania DLLek, ładowania ich i uzywania. DLLka musi zawierać klasę implementującą jakiś interfejs. Interfejs umożliwia programowi głownemu pobranie nazwy modułu, wywołanie jakichś akcji itp. Potem np do tej samej solucji dodajesz drugi projekt, ustawiasz że na wyjściu zamiast pliku exe ma byc dll i piszesz sobie klasę implementującą wcześniej wymyslony interfejs

0

nic do ciebie nie dociera, żadne tłumaczenie!
Po pierwsze nie da się tak jak ty to sobie wyobrażasz połączyć dwóch aplikacji (plików EXE) podczas działania w jedną całość. Po drugie należy to obmyślić zanim uruchomisz VS. Żeby coś zacząć robić wypadało by wiedzieć co chcesz zrobić.

Teraz do konkretów. Aby to zadziałało należy zaimplementować mechanizm pluginów (linki do opisu i przykładów dostałeś wcześniej) - jest jedna aplikacja główna (EXE) i pluginy, które mają swoje np. formy, kontrolki i logikę (pliki DLL). Tak jak wspomniałem do tego momentu masz w linkach wyżej. Teraz jeśli koniecznie chcesz ribbona i integrowanie się pluginów z menu w głównej aplikacji to musisz to sobie sam napisać (albo znaleźć)! Nie ma innej opcji - to nie jest coś co dostajesz w pudełku. Musisz napisać kod, który po wczytaniu plugina odpyta go o to czy chce się "pokazać" na wstędze i jeśli tak to gdzie, co i jak. Wiąże się to z tworzeniem elementów wstęgi w kodzie a nie w designerze.

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