winforms
Помощь интеграции
Поиск…
замечания
Вы можете предоставлять помощь для форм и элементов управления в приложениях 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
будет выглядеть так:
Показать 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
. Для этого вам необходимо:
- Установите
HelpButton
свойстваHelpButton
формы значениеtrue
. - Установите
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");
}