Szukaj…


Uwagi

Możesz udzielać pomocy dotyczącej formularzy i formantów w aplikacjach formularzy Windows na różne sposoby. Możesz wyświetlić wyskakującą pomoc, otworzyć plik CHM lub adres URL. Możesz wyświetlić pomoc kontekstową dla formularzy, kontrolek i okien dialogowych.

Komponent HelpProvider

Można skonfigurować składnik HelpProvider , aby zapewniał pomoc kontekstową dla tego składnika. W ten sposób, gdy użytkownik naciśnie klawisz F1 lub przycisk Pomoc w formularzu, możesz automatycznie:

  • Pokaż wyskakujące okienko pomocy kontekstowej dla kontrolek
  • Otwórz plik CHM na podstawie kontekstu (Pokaż spis treści, Pokaż słowo kluczowe lub indeks, pokaż temat)
  • Przejdź do adresu URL za pomocą domyślnej przeglądarki

Klasa pomocy

Możesz użyć klasy Help w kodzie, aby zapewnić następujące rodzaje pomocy:

  • Pokaż wyskakujące okienko pomocy dla kontrolki
  • Otwórz plik CHM na podstawie kontekstu (Pokaż spis treści, Pokaż słowo kluczowe lub indeks, pokaż temat)
  • Przejdź do adresu URL za pomocą domyślnej przeglądarki

Zdarzenie HelpRequested

Możesz obsłużyć zdarzenie HelpRequested obiektów Control lub Form aby wykonać niestandardowe akcje, gdy użytkownik naciśnie F1 lub kliknie przycisk Pomoc formularza.

Przycisk pomocy formularza

Możesz skonfigurować Form aby wyświetlał przycisk Pomoc na pasku tytułu. W ten sposób, jeśli użytkownik kliknie przycisk Pomoc, kursor zmieni się na ? kursor i po kliknięciu dowolnego punktu zostanie wyświetlona wszelka pomoc kontekstowa powiązana z kontrolką za pomocą programu HelpProvider .

Przycisk pomocy MessgeBox i CommonDialogs

Możesz zapewnić pomoc dla MessageBox , OpenFileDialog , SaveDialog i ColorDialog za pomocą przycisku Pomoc komponentów.

Składnik podpowiedzi

Możesz użyć składnika ToolTip , aby wyświetlić tekst pomocy, gdy użytkownik wskazuje na elementy sterujące. ToolTip można przypisać do dowolnej kontrolki.

Uwaga

Korzystanie z HelpProvider i klasy Help Możesz wyświetlać skompilowane pliki Pomocy (.chm) lub pliki HTML w formacie Pomocy HTML. Skompilowane pliki pomocy zawierają spis treści, indeks, możliwości wyszukiwania i linki słów kluczowych na stronach. Skróty działają tylko w skompilowanych plikach Pomocy. Możesz wygenerować pliki Pomocy HTML 1.x, korzystając z Warsztatu Pomocy HTML. Aby uzyskać więcej informacji o Pomocy HTML, zobacz „Warsztat Pomocy HTML” i inne tematy Pomocy HTML w Pomocy Microsoft HTML .

Pokaż plik pomocy

Help Class zawiera silnik HTML Help 1.0. Za pomocą obiektu Pomoc można wyświetlić skompilowane pliki pomocy (.chm) lub pliki HTML w formacie pomocy HTML. Skompilowane pliki pomocy zawierają spis treści, indeks, wyszukiwanie i linki słów kluczowych na stronach. Skróty działają tylko w skompilowanych plikach Pomocy. Możesz wygenerować pliki HTML Help 1.x za pomocą darmowego narzędzia Microsft o nazwie HTML Help Workshop .

Łatwy sposób na wyświetlenie skompilowanego pliku pomocy w drugim oknie:

DO#

Help.ShowHelp(this, helpProviderMain.HelpNamespace);

VB.NET

Help.ShowHelp(Me, hlpProviderMain.HelpNamespace)

Pokaż pomoc dla MessageBox

Możesz pomóc w wyświetlaniu wiadomości na różne sposoby. Możesz skonfigurować MessageBox aby wyświetlał przycisk Help lub nie. Możesz także skonfigurować MessageBox w taki sposób, że gdy użytkownik poprosi o pomoc, klikając przycisk Pomoc lub naciskając F1 , wyświetla plik CHM lub nawiguje do adresu URL lub wykonuje akcję niestandardową. Oto kilka przykładów w tym temacie.

We wszystkich poniższych przykładach MessageBox wyglądałby tak:

MessageBox z przyciskiem pomocy

Pokaż plik CHM i przejdź do słowa kluczowego (indeksu)

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm", HelpNavigator.KeywordIndex, "SomeKeyword");

Pokaż plik CHM i przejdź do tematu

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");

Pokaż plik CHM i przejdź do pierwszej strony pomocy w spisie treści

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm");

Otwórz domyślną przeglądarkę i przejdź do adresu URL

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "http://example.com");

Wykonaj niestandardową akcję po naciśnięciu przycisku Pomoc lub klawisza F1

W takim przypadku należy obsłużyć zdarzenie HelpRequested elementu nadrzędnego MessageBox i wykonać niestandardową operację:

private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    // Perform custom action, for example show a custom help form
    var f = new Form();  
    f.ShowDialog();
}

Następnie możesz wyświetlić MessageBox z przyciskiem Pomoc:

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, true);

Lub pokaż to bez przycisku Pomoc:

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, false);

Pokaż pomoc dla CommonDialogs

Możesz udzielić pomocy dla OpenFileDialog , SaveFileDialog i ColorDialog . Aby to zrobić, ustaw właściwość ShowHelp okna dialogowego na wartość true i HelpRequest zdarzenie HelpRequest dla okna dialogowego:

void openFileDialog1_HelpRequest(object sender, EventArgs e)
{
    //Perform custom action
    Help.ShowHelp(this, "Http://example.com");
}

Uwaga

  • Zdarzenie zostanie zgłoszone tylko wtedy, gdy dla ShowHelp zostanie ustawiona ShowHelp true .
  • Wydarzenie zostanie podniesione tylko poprzez kliknięcie przycisku Help i nie zostanie podniesione za pomocą klawisza F1.

Na poniższym obrazku widać OpenFileDialog z przyciskiem Pomoc:

Otwórz okno dialogowe pliku za pomocą przycisku Pomoc

Obsługa pomocy Żądane zdarzenie kontroli i formularza

Gdy użytkownik naciśnie F1 na HelpRequested lub kliknie przycisk Pomoc w formularzu ( ? ), A następnie kliknie kontrolkę, zostanie HelpRequested zdarzenie HelpRequested .

Możesz obsłużyć to zdarzenie, aby zapewnić niestandardowe działanie, gdy użytkownik poprosi o pomoc w zakresie formantów lub formularza.

HelpRequested obsługuje mechanizm tworzenia bąbelków. Uruchamia się dla twojej aktywnej kontroli, a jeśli nie obsłużysz zdarzenia i nie ustawisz właściwości Handled jego zdarzenia arg na wartość true , wówczas zostanie przeniesiony do nadrzędnej hierarchii kontroli do postaci.

Na przykład, jeśli HelpRequested zdarzenie HelpRequested formularza jak poniżej, wtedy po naciśnięciu F1 pojawi się okno komunikatu i pokaże nazwę aktywnej kontroli, ale dla textBox1 wyświetli inną wiadomość:

private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    var c = this.ActiveControl;
    if(c!=null)
        MessageBox.Show(c.Name);
}
private void textBox1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    hlpevent.Handled = true;
    MessageBox.Show("Help request handled and will not bubble up");
}

Możesz wykonać dowolną inną niestandardową akcję, np. Nawigację do adresu URL lub wyświetlenie pliku CHM za Help klasy Help .

Pokaż pomoc za pomocą klasy Pomocy

Możesz użyć klasy Help w kodzie, aby zapewnić następujące rodzaje pomocy:

  • Pokaż wyskakujące okienko pomocy dla kontrolki
  • Otwórz plik CHM na podstawie kontekstu (Pokaż spis treści, Pokaż słowo kluczowe lub indeks, pokaż temat)
  • Przejdź do adresu URL za pomocą domyślnej przeglądarki

Pokaż wyskakujące okno Pomoc

Możesz użyć Help.ShowPopup aby wyświetlić wyskakujące okno pomocy:

private void control_MouseClick(object sender, MouseEventArgs e)
{
    var c = (Control)sender;
    var help = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " +
               "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
    if (c != null)
        Help.ShowPopup(c, "Lorem ipsum dolor sit amet.", c.PointToScreen(e.Location));
}

Wyświetli takie wyskakujące okno pomocy w miejscu wskaźnika myszy:

wprowadź opis zdjęcia tutaj

Pokaż plik pomocy CHM

Możesz użyć różnych przeciążeń metody Help.ShowHelp , aby wyświetlić plik CHM i przejść do słowa kluczowego, tematu, indeksu lub spisu treści:

Pokaż spis treści pomocy

Help.ShowHelp(this, "Help.chm"); 

Pokaż pomoc dla określonego słowa kluczowego (indeks)

Help.ShowHelp(this, "Help.chm", HelpNavigator.Index, "SomeKeyword");

Pokaż pomoc dla określonego tematu

Help.ShowHelp(this, "Help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");

Pokaż adres URL

Możesz wyświetlić dowolny adres URL w domyślnej przeglądarce za pomocą metody ShowHelp :

Help.ShowHelp(this, "Http://example.com");

Pokaż przycisk pomocy na pasku tytułu formularza

Możesz wyświetlić przycisk Pomoc na pasku tytułu Form . Aby to zrobić, powinieneś:

  1. Ustaw właściwość HelpButton formy na true .
  2. Ustaw MinimizeBox i MaximizeBox na false .

Następnie na pasku tytułu Form pojawi się przycisk pomocy:

wprowadź opis zdjęcia tutaj

Również po kliknięciu przycisku Pomoc kursor zmieni się na ? kursor:

wprowadź opis zdjęcia tutaj

Następnie, po kliknięciu Control lub Form , HelpRequested zostanie zdarzenie HelpRequested a także jeśli skonfigurowano HelpProvider , pomoc dla formantu zostanie wyświetlona za pomocą HelpProvider .

Utwórz niestandardowy przycisk Pomoc, który działa jak standardowy Formularz pomocy

Jeśli masz Form z wartościami MinimizeBox i MaximizeBox ustawionymi na true , nie możesz wyświetlić przycisku Pomoc na pasku tytułu Form i utracisz funkcję klikania przycisku pomocy, aby go przekonwertować, aby kursor mógł klikać elementy sterujące, aby Pokaż pomoc.

Możesz sprawić, aby element menu na MenuStrip działał jak standardowy przycisk Pomoc. Aby to zrobić, dodaj MenuStrip do formularza i dodaj do niego ToolStripMenuItem , a następnie MenuStrip zdarzenie Click elementu:

private const int WM_SYSCOMMAND = 0x0112;
private const int SC_CONTEXTHELP = 0xF180;
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
private void helpToolStripMenuItem_Click(object sender, EventArgs e)
{
    SendMessage(this.Handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0);
}

Uwaga: Jeśli chcesz to zrobić za pomocą Button , musisz również ustawić button1.Capture = false; przed wysłaniem wiadomości. Ale nie jest to konieczne w przypadku ToolStripMenuItem .

Następnie po kliknięciu menu pomocy kursor zmieni się na ? kursor i będzie działać tak, jak po kliknięciu standardowego przycisku Pomoc:

Niestandardowy przycisk pomocy

Obsługa zdarzenia HelpButtonClicked zdarzenia Form

Możesz wykryć, kiedy użytkownik kliknął przycisk HelpButton na HelpButton tytułu formularza, korzystając z HelpButtonClicked . Możesz pozwolić wydarzeniu kontynuować lub anulować je, ustawiając właściwość Cancel jego zdarzenia na true .

private void Form1_HelpButtonClicked(object sender, CancelEventArgs e)
{
    e.Cancel = true;
    //Perform some custom action
    MessageBox.Show("Some Custom Help");
}


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow