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í:

Cuadro de mensaje con el botón de ayuda

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 en true .
  • 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:

Abrir archivo de diálogo con 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:

introduzca la descripción de la imagen aquí

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:

  1. Establezca la propiedad HelpButton de form en true .
  2. Establezca MinimizeBox y MaximizeBox en false .

Luego aparecerá un botón de ayuda en la barra de título de la Form :

introduzca la descripción de la imagen aquí

Además, al hacer clic en el botón Ayuda, el cursor cambiará a ? cursor:

introduzca la descripción de la imagen aquí

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:

Botón de ayuda personalizado

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow