winforms
Integración de ayuda
Buscar..
Observaciones
Puede proporcionar ayuda para formularios y controles en aplicaciones de formularios Windows Forms de diferentes maneras. Puede mostrar una ayuda emergente, abrir un archivo CHM o una URL. Puede mostrar ayuda contextual para formularios, controles y cuadros de diálogo.
Componente HelpProvider
Puede configurar un componente HelpProvider
para proporcionar ayuda sensible al contexto para el componente. De esta manera, cuando el usuario presione la tecla F1 o el botón de Ayuda de la forma, puede automáticamente:
- Mostrar una ventana emergente de ayuda sensible al contexto para los controles
- Abra un archivo CHM según el contexto (Mostrar tabla de contenido, Mostrar una palabra clave o índice, mostrar un tema)
- Navegue a una URL usando el navegador predeterminado
Clase de ayuda
Puede usar la clase de Help
en el código, para proporcionar este tipo de ayuda:
- Mostrar una ayuda emergente para un control
- Abra un archivo CHM según el contexto (Mostrar tabla de contenido, Mostrar una palabra clave o índice, mostrar un tema)
- Navegue a una URL usando el navegador predeterminado
Evento de Solicitud de Ayuda
Puede manejar el evento HelpRequested
de objetos de Control
o Form
para realizar acciones personalizadas cuando el usuario presione F1 o haga clic en el botón Ayuda del formulario.
Botón de ayuda de la forma
Puede configurar el Form
para que muestre el botón Ayuda en la barra de título. De esta manera, si el usuario hace clic en el botón Ayuda, el cursor cambiará a ?
y después de hacer clic en cualquier punto, se mostrará cualquier ayuda sensible al contexto asociada con el control que usa el HelpProvider
.
Botón de ayuda de MessgeBox y CommonDialogs
Puede proporcionar ayuda para MessageBox
, OpenFileDialog
, SaveDialog
y ColorDialog
usando el botón de Ayuda de los componentes.
Componente ToolTip
Puede usar el componente ToolTip
para mostrar un texto de ayuda cuando el usuario apunta a los controles. Una ToolTip
se puede asociar con cualquier control.
Nota
Uso de HelpProvider
y clase de Help
Puede mostrar archivos de Ayuda compilados (.chm) o archivos HTML en el formato de Ayuda HTML. Los archivos de Ayuda compilados proporcionan una tabla de contenido, un índice, capacidad de búsqueda y enlaces de palabras clave en las páginas. Los accesos directos solo funcionan en los archivos de Ayuda compilados. Puede generar archivos de Ayuda HTML 1.x utilizando el Taller de Ayuda HTML. Para obtener más información sobre la Ayuda HTML, consulte "Taller de Ayuda HTML" y otros temas de la Ayuda HTML en la Ayuda HTML de Microsoft .
Mostrar archivo de ayuda
La Help Class
encapsula el motor de ayuda 1.0 de HTML. Puede usar el objeto de Ayuda para mostrar los archivos de Ayuda compilados (.chm) o los archivos HTML en el formato de Ayuda HTML. Los archivos de Ayuda compilados proporcionan enlaces de tabla de contenido, índice, búsqueda y palabras clave en las páginas. Los accesos directos solo funcionan en los archivos de Ayuda compilados. Puede generar archivos de Ayuda HTML 1.x con una herramienta gratuita de Microsft llamada HTML Help Workshop
.
Una forma fácil de mostrar un archivo de ayuda compilado en una segunda ventana:
DO#
Help.ShowHelp(this, helpProviderMain.HelpNamespace);
VB.NET
Help.ShowHelp(Me, hlpProviderMain.HelpNamespace)
Mostrar ayuda para MessageBox
Puede proporcionar ayuda para el cuadro de mensaje de diferentes maneras. Puede configurar un MessageBox
para mostrar un botón de Help
o no. También puede configurar MessageBox
de manera que cuando el usuario solicite ayuda haciendo clic en el botón Ayuda o presionando F1 , muestre un archivo CHM o navegue a una URL o realice una acción personalizada. Aquí hay algunos ejemplos en este tema.
En todos los ejemplos a continuación, el MessageBox
sería así:
Mostrar un archivo CHM y navegar a una palabra clave (índice)
MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
"help.chm", HelpNavigator.KeywordIndex, "SomeKeyword");
Mostrar un archivo CHM y navegar a un tema
MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
"help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");
Muestra un archivo CHM y navega por la primera página de ayuda en la tabla de contenido
MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
"help.chm");
Abre el navegador predeterminado y navega a una URL
MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
"http://example.com");
Realizar una acción personalizada al presionar el botón de Ayuda o la tecla F1
En este caso, debe manejar el evento HelpRequested
del padre de MessageBox
y realizar una operación personalizada:
private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
// Perform custom action, for example show a custom help form
var f = new Form();
f.ShowDialog();
}
Luego puedes mostrar el MessageBox
con el botón de Ayuda:
MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, true);
O mostrarlo sin el botón de ayuda:
MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, false);
Mostrar ayuda para CommonDialogs
Puede proporcionar ayuda para OpenFileDialog
, SaveFileDialog
y ColorDialog
. Para hacerlo, establezca la propiedad ShowHelp
del diálogo en true
y maneje el evento HelpRequest
para el diálogo:
void openFileDialog1_HelpRequest(object sender, EventArgs e)
{
//Perform custom action
Help.ShowHelp(this, "Http://example.com");
}
Nota
- El evento se generará solo si establece
ShowHelp
entrue
. - El evento se levantará solo haciendo clic en el botón
Help
y no se levantará usando la tecla F1.
En la imagen de abajo puedes ver un OpenFileDialog
con un botón de Ayuda:
Manejando el evento HelpRequested de Controls and Form
Cuando un usuario presiona F1 en un control o hace clic en el botón Ayuda de la forma ( ? ) Y luego hace clic en un control, se HelpRequested
evento HelpRequested
.
Puede manejar este evento para proporcionar una acción personalizada cuando el usuario solicite ayuda para los controles o el formulario.
El HelpRequested
soporta el mecanismo de burbuja. Se dispara para su control activo y si no controla el evento y no establece la propiedad Handled
de su evento arg en true
, entonces se eleva hasta la jerarquía de control principal hasta la forma.
Por ejemplo, si maneja el evento HelpRequested
del formulario como se muestra a continuación, al presionar F1 aparecerá un cuadro de mensaje que mostrará el nombre del control activo, pero para textBox1
mostrará un mensaje diferente:
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");
}
Puede realizar cualquier otra acción personalizada, como navegar a una URL o mostrar un archivo CHM utilizando la clase de Help
.
Mostrar ayuda usando la clase de ayuda
Puede usar la clase de Help
en el código, para proporcionar este tipo de ayuda:
- Mostrar una ayuda emergente para un control
- Abra un archivo CHM según el contexto (Mostrar tabla de contenido, Mostrar una palabra clave o índice, mostrar un tema)
- Navegue a una URL usando el navegador predeterminado
Mostrar ventana emergente de ayuda
Puede usar Help.ShowPopup
para mostrar una ventana emergente de ayuda:
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));
}
Mostrará tal ayuda emergente en la ubicación del puntero del mouse:
Mostrar archivo de ayuda CHM
Puede usar diferentes sobrecargas del método Help.ShowHelp
para mostrar un archivo CHM y navegar a una palabra clave, un tema, índice o tabla de contenido:
Mostrar tabla de ayuda de contenido
Help.ShowHelp(this, "Help.chm");
Mostrar ayuda para palabra clave específica (índice)
Help.ShowHelp(this, "Help.chm", HelpNavigator.Index, "SomeKeyword");
Mostrar ayuda para un tema específico
Help.ShowHelp(this, "Help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");
Mostrar url
Puedes mostrar cualquier URL en el navegador predeterminado usando el método ShowHelp
:
Help.ShowHelp(this, "Http://example.com");
Mostrar botón de ayuda en la barra de título del formulario
Puede mostrar un botón de ayuda en la barra de título de un Form
. Para hacerlo, debes:
- Establezca la propiedad
HelpButton
de form entrue
. - Establezca
MinimizeBox
yMaximizeBox
enfalse
.
Luego aparecerá un botón de ayuda en la barra de título de la Form
:
Además, al hacer clic en el botón Ayuda, el cursor cambiará a ?
cursor:
Luego, si hace clic en un Control
o Form
, se HelpRequested
evento HelpRequested
y también si ha configurado un HelpProvider
, la ayuda para el control se mostrará usando HelpProvider
.
Crea un botón de Ayuda personalizado que actúa como el Formulario de Ayuda estándar.
Si tiene un Form
con MinimizeBox
y MaximizeBox
establecido en true
, entonces no puede mostrar el botón Ayuda en la barra de título de la Form
y perderá la función de hacer clic en el botón de ayuda para convertirlo en el cursor de ayuda para poder hacer clic en los controles para mostrar ayuda.
Puede hacer que un elemento del menú en MenuStrip
actúe como el botón de Ayuda estándar. Para hacerlo, agregue un MenuStrip
al formulario y agregue un ToolStripMenuItem
al mismo, luego maneje el evento Click
del elemento:
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);
}
Nota: Si desea hacerlo usando un Button
, también necesita configurar button1.Capture = false;
antes de enviar el mensaje. Pero no es necesario para un ToolStripMenuItem
.
Luego, al hacer clic en el menú de ayuda, el cursor cambiará a ?
cursor y actuará como cuando haces clic en el botón de Ayuda estándar:
Manejo del evento HelpButtonClicked de Form
Puede detectar cuándo un usuario hizo HelpButton
en un HelpButton
en la barra de título de la forma manejando HelpButtonClicked
. Puede dejar que el evento continúe o cancelarlo configurando la propiedad Cancel
de sus argumentos de evento en true
.
private void Form1_HelpButtonClicked(object sender, CancelEventArgs e)
{
e.Cancel = true;
//Perform some custom action
MessageBox.Show("Some Custom Help");
}