2012-06-21 11 views
6

Chciałbym móc dodać przycisk pomocy do mojej winform, ale zachowaj przyciski maksymalizacji i minimalizacji, ale standardowy Windows służy do wyłączania obu, aby móc wyświetlić przycisk pomocy .Dodaj przycisk pomocy, ale zachowaj maksymalizację i zminimalizuj

Istnieje już podobne pytanie: How to include help '?' in title bar of winform - ale w tej kwestii, kto zadał pytanie jest zadowolony z usuwaniem tych 2 przycisków za pomoc, aby pokazać.

Czy jest tam, że mogę mieć pomoc, maks, min i zamknąć wszystkie przyciski w tym samym czasie?

Dzięki.

+1

Tak, ale czy przeczytałeś tę odpowiedź? Wskazuje, że musisz samemu odtworzyć pasek tytułu. To dużo pracy za tak mały zysk. – LarsTech

+0

@LarsTech - Miałem nadzieję, że był sposób, w jaki sposób nie udało się całkowicie przekodować granicy. – Axxelsian

Odpowiedz

6

System Windows nie obsługuje wyświetlania obu. Obejście problemu polega na udostępnieniu własnego przycisku uruchamiającego tę samą akcję. Umieść go gdzieś blisko prawego górnego rogu. Wyzwalasz to wysyłając wiadomość WM_SYSCOMMAND, tak jak robi to standardowy przycisk pomocy. W ten sposób:

private void Help_Click(object sender, EventArgs e) { 
     Help.Capture = false; 
     SendMessage(this.Handle, WM_SYSCOMMAND, (IntPtr)SC_CONTEXTHELP, IntPtr.Zero); 
    } 

    private const int WM_SYSCOMMAND = 0x112; 
    private const int SC_CONTEXTHELP = 0xf180; 
    [System.Runtime.InteropServices.DllImport("user32.dll")] 
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); 

Który zakłada, że ​​nazwa przycisku to "Pomoc".

+0

Nie zdawałem sobie sprawy, że mogę użyć przycisku i, aby wywołać tę samą akcję. Dzięki. – Axxelsian

+0

Wygląda na to, że Windows obsługuje zarówno wyświetlanie, jak widać po otwarciu najnowszej wersji programu Word. W rzeczywistości mają nawet inny przycisk do kontroli wstęgi. Po prostu z jakiegoś powodu to nie jest poprawnie obsługiwane w Windows Forms ... – glopes

+2

Aplikacje biurowe używają niestandardowej ramki, a nie standardowej ramki okna. Dobre rzeczy, które możesz zrobić, gdy setki programistów pracują nad produktem. –

1

Jednym ze sposobów na zrobienie tego jest narysowanie własnej granicy.

FormBorderStyle = None 

Utwórz teraz własny obszar napisów. Nie jest to trywialne, ponieważ musisz obsługiwać zdarzenia zmiany rozmiaru przeciągania, przezroczystość, jeśli chcesz zaokrąglić rogi, itp.

Powiązane problemy