2012-02-08 15 views
6

W moim formularzu okna .net (używam XP Pro SP3 i VS 2010), utworzyłem menustrip. W menustripu znajduje się kilka pozycji menu, z których każda zawiera rozwijane menu. Pozycje menu w rozwijanych menu mają ikonę z pewnym tekstem. Chcę, aby menu było bardziej zwarte, zmniejszając poziomą przestrzeń między ikoną a tekstem. (Dodałem do zdjęcia czerwoną strzałkę, aby pokazać przestrzeń, o której mówię).Zmniejszanie odstępu między ikoną elementu menu a jego tekstem

enter image description here

tej pory mam ustawić dopełnienie wszystkich elementów menu na 0, ale to tylko wydaje się wpływać na pionowe odstępy między jednej pozycji menu i następny.

chcę użyć systemurendermode się dla MenuStrip (choć problem nadal występuje bez względu na to co rendermode używam. Ikony w menu są 16x16 i mają właściwość sizetofit.

Zabawne jest to, że ten sam odstęp jest taki sam, jak chcę go w menustrip - ikona znajduje się tuż obok tekstu:

Spowoduje to całkowite usunięcie marginesu obrazu, ale spowoduje to również usunięcie obrazów; chcę tylko zmienić szerokość marginesu obrazu:

For Each menuItem As ToolStripMenuItem In menu_main.Items 
     DirectCast(menuItem.DropDown, ToolStripDropDownMenu).ShowImageMargin = False 
    Next 

Co mogę tutaj zrobić?

+0

tak na marginesie, to nie jest to bardzo dobry pomysł, aby dostosować ustalone idiomów UI w ten sposób. Wiem, że sama Microsoft robi to cały czas, ale znacznie lepiej jest przestrzegać standardów UI systemu operacyjnego w tym zakresie. –

+0

@Konrad Rudolph Ogólnie, zgadzam się z tobą. Naprawdę bardzo podoba mi się wygląd menu w XP i wolę pozostawić go w spokoju, ale menu, które mówi mi VS, to renderowanie systemu nie przypomina menu rozwijanych innych programów. Między ikoną a tekstem znajduje się prawie ćwierć cala przestrzeni. To nie jest tak nigdzie indziej poza biurem Microsoft. Odstępy powinny wynosić co najwyżej szesnaste lub ósme. – bgmCoder

+0

Ach, pamiętam: brzmi to tak, jakby to był obszar pól wyboru (które mogą istnieć w menu). Czy upewniłeś się, że nie ma opcji wyłączenia tego zachowania, a nie modyfikowania rysunku? Nie pracowałem z .NET od dłuższego czasu, nie pamiętam, czy to istnieje, czy nie. –

Odpowiedz

2

To trochę oszustwo i prawdopodobnie nie będzie wyglądać tak czysto, jak byś chciał, ale udało mi się to zrobić, robiąc zdjęcie z tekstem, a następnie ustawiając następujące właściwości w projektancie dla element menu:

DisplayStyle = Image

ImageScaling = None

enter image description here

+0

Dałem ci +1 za kreatywność. To prawdziwe rozwiązanie! Jednak usuwa możliwość tekstu dynamicznego w elementach menu i utrudnia ponowne użycie ikon do innych celów. Nie do końca miałem nadzieję, ale godne podziwu rozwiązanie. – bgmCoder

Powiązane problemy