Поиск…


замечания

Вы можете предоставлять помощь для форм и элементов управления в приложениях Windows Forms по-разному. Вы можете открыть всплывающее окно, открыть CHM-файл или URL-адрес. Вы можете показать контекстно-зависимую справку для форм, элементов управления и диалогов.

Компонент HelpProvider

Вы можете настроить компонент HelpProvider для предоставления контекстно-зависимой справки для компонента. Таким образом, когда пользователь нажимает клавишу F1 или кнопку справки формы, вы можете автоматически:

  • Показать контекстно-зависимую подсказку для элементов управления
  • Откройте CHM-файл на основе контекста (Показать таблицу содержимого, Показать ключевое слово или индекс, показать тему)
  • Перейдите к URL-адресу, используя браузер по умолчанию.

Класс справки

Вы можете использовать класс Help в коде, чтобы обеспечить такую ​​помощь:

  • Показывать всплывающее окно справки для элемента управления
  • Откройте CHM-файл на основе контекста (Показать таблицу содержимого, Показать ключевое слово или индекс, показать тему)
  • Перейдите к URL-адресу, используя браузер по умолчанию.

Событие HelpRequested

Вы можете обрабатывать событие HelpRequested объектов Control или Form для выполнения пользовательских действий при нажатии пользователем F1 или нажатии кнопки справки формы.

Кнопка помощи формы

Вы можете настроить Form для отображения кнопки справки в заголовке. Таким образом, если пользователь нажмет кнопку «Справка», курсор изменится на a ? курсор и после щелчка по любой точке будет отображаться любая контекстно-зависимая справка, связанная с HelpProvider управления с помощью HelpProvider .

Кнопка справки MessgeBox и CommonDialogs

Вы можете предоставить помощь для MessageBox , OpenFileDialog , SaveDialog и ColorDialog с помощью кнопки справки компонентов.

Компонент ToolTip

Вы можете использовать компонент ToolTip для отображения некоторого текста справки, когда пользователь указывает на элементы управления. ToolTip может быть связана с любым ToolTip управления.

Заметка

Использование HelpProvider и Help Вы можете отображать скомпилированные файлы справки (.chm) или HTML-файлы в формате справки HTML. Скомпилированные файлы справки содержат оглавление, индекс, возможности поиска и ссылки на ключевые слова на страницах. Ярлыки работают только в скомпилированных файлах справки. Вы можете создавать файлы справки HTML 1.x с помощью справочной системы справки HTML. Дополнительные сведения о справке HTML см. В «Справочном руководстве по HTML» и других разделах справки HTML в Справке Microsoft HTML .

Показать файл справки

Класс Help Class инкапсулирует HTML-версию 1.0. Вы можете использовать объект справки для отображения скомпилированных файлов справки (.chm) или HTML-файлов в формате справки HTML. Скомпилированные файлы справки содержат оглавления, индексы, поиск и ссылки на ключевые слова на страницах. Ярлыки работают только в скомпилированных файлах справки. Вы можете создавать файлы справки HTML 1.x с помощью бесплатного инструмента из Microsft, называемого HTML Help Workshop службой HTML Help Workshop .

Простой способ показать скомпилированный файл справки во втором окне:

C #

Help.ShowHelp(this, helpProviderMain.HelpNamespace);

VB.NET

Help.ShowHelp(Me, hlpProviderMain.HelpNamespace)

Показать справку для MessageBox

Вы можете предоставить помощь для окна сообщений по-разному. Вы можете настроить MessageBox для отображения кнопки Help или нет. Также вы можете настроить MessageBox таким образом, чтобы при запросе пользователя на помощь, нажав кнопку «Справка» или нажав клавишу F1 , он отображает CHM-файл или перемещается по URL-адресу или выполняет собственное действие. Вот несколько примеров в этом разделе.

В приведенных ниже примерах MessageBox будет выглядеть так:

MessageBox с кнопкой справки

Показать CHM-файл и перейти к ключевому слову (index)

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

Показать CHM-файл и перейти к теме

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

Показать CHM-файл и перейти к первой странице справки в оглавлении

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

Откройте браузер по умолчанию и перейдите к URL-адресу

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

Выполняйте индивидуальное действие при нажатии кнопки «Справка» или клавиши F1

В этом случае вы должны обработать событие HelpRequested родителя MessageBox и выполнить пользовательскую операцию:

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

Затем вы можете показать MessageBox кнопкой справки:

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

Или покажите его без кнопки справки:

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

Показать справку для CommonDialogs

Вы можете предоставить помощь для OpenFileDialog , SaveFileDialog и ColorDialog . Для этого установите ShowHelp свойства ShowHelp диалогового окна значение true и обработайте событие HelpRequest для диалога:

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

Заметка

  • Событие будет поднято только в том случае, если для параметра ShowHelp установлено ShowHelp true .
  • Событие будет поднято только нажатием кнопки « Help и не будет подниматься с помощью клавиши F1.

На изображении ниже вы можете увидеть OpenFileDialog с кнопкой справки:

Открыть диалоговое окно «Файл» с помощью кнопки «Справка»

Обработка справки Проверенное событие элементов управления и формы

Когда пользователь нажимает F1 на элементе управления или нажимает кнопку «Справка» формы ( ? ), А затем нажимает на элемент управления, событие HelpRequested будет поднято.

Вы можете обработать это событие, чтобы предоставить настраиваемое действие, когда пользователь запрашивает помощь для элементов управления или формы.

HelpRequested поддерживает механизм пузырьков. Он запускает ваш активный элемент управления, и если вы не обрабатываете событие и не Handled свойство Handled своего события arg true , тогда он пузырится до иерархии родительских элементов управления до формы.

Например, если вы обрабатываете событие HelpRequested формы, как HelpRequested ниже, то, когда вы нажмете F1, появится окно с сообщением и отобразит имя активного элемента управления, но для textBox1 появится другое сообщение:

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");
}

Вы можете выполнять любые другие пользовательские действия, например, используя навигацию к URL-адресу или отображение CHM-файла с Help класса Help .

Показать справку, используя класс справки

Вы можете использовать класс Help в коде, чтобы обеспечить такую ​​помощь:

  • Показывать всплывающее окно справки для элемента управления
  • Откройте CHM-файл на основе контекста (Показать таблицу содержимого, Показать ключевое слово или индекс, показать тему)
  • Перейдите к URL-адресу, используя браузер по умолчанию.

Показать всплывающее окно справки

Вы можете использовать Help.ShowPopup для отображения всплывающего окна справки:

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));
}

Он отобразит такую ​​подсказку в месте расположения указателя мыши:

введите описание изображения здесь

Показать файл справки CHM

Вы можете использовать различные перегрузки метода Help.ShowHelp , чтобы показать CHM-файл и перейти к ключевому слову, теме, индексу или таблице содержимого:

Показать таблицу справки

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

Показать справку по конкретному ключевому слову (указателю)

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

Показать справку по конкретной теме

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

Показать URL

Вы можете показать любой URL-адрес в браузере по умолчанию, используя метод ShowHelp :

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

Показать кнопку справки на панели заголовка формы

Вы можете показать кнопку справки в строке заголовка Form . Для этого вам необходимо:

  1. Установите HelpButton свойства HelpButton формы значение true .
  2. Установите MinimizeBox и MaximizeBox на false .

Затем в строке заголовка Form появится кнопка помощи:

введите описание изображения здесь

Также, когда вы нажимаете кнопку «Справка», курсор будет изменен на ? курсор:

введите описание изображения здесь

Затем, если вы нажмете на элемент Control или Form , событие HelpRequested будет поднято, а также если вы настроите HelpProvider , то помощь для HelpProvider управления будет показана с помощью HelpProvider .

Создайте собственную кнопку справки, которая действует как стандартная форма HelpButton

Если у вас есть Form с MinimizeBox и MaximizeBox установленная в true , то вы не можете показать кнопку справки на панели заголовка Form и потеряете функцию щелчка по кнопке справки, чтобы преобразовать ее, чтобы помочь курсору, чтобы можно было щелкнуть элементы управления, чтобы показать справку.

Вы можете сделать пункт меню в MenuStrip как стандартная кнопка справки. Для этого добавьте MenuStrip в форму и добавьте в нее ToolStripMenuItem , а затем обработайте событие Click элемента:

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);
}

Примечание. Если вы хотите сделать это с помощью Button , вам также необходимо установить button1.Capture = false; перед отправкой сообщения. Но это не обязательно для ToolStripMenuItem .

Затем, когда вы нажимаете на меню справки, курсор будет изменен на ? курсор и будет действовать, когда вы нажимаете кнопку стандартной справки:

Пользовательская кнопка помощи

Обработка события HelpButtonClicked формы

Вы можете обнаружить, когда пользователь HelpButton на HelpButton на панели заголовка формы, HelpButtonClicked к HelpButtonClicked . Вы можете позволить событию продолжить или отменить его, установив для параметра Cancel свойство своего события значение 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow