ComponentOne DynamicHelp for WinForms
DynamicHelp for WinForms Tutorials / Tutorial 2: Mapping Help Topics in Authoring Mode / Step 2 of 4: Set up the C1DynamicHelp control
In This Topic
    Step 2 of 4: Set up the C1DynamicHelp control
    In This Topic

    In order to associate topics from your Help file with form controls, you must specify the source Help file.

    You can do this from the C1DynamicHelp Tasks menu by setting the HelpSource property to any *.chm file or NetHelp *.htm file (use the default.htm or the file name that was used as the base URL for the NetHelp target.). In this example, we will use the C1Sample.chm installed with DynamicHelp for WinForms, by default.

    Once a source Help file is specified, you can prepare the C1DynamicHelp control to be used in authoring mode. This step should be performed by the developer.

    1. Click the C1DynamicHelp smart tag () to open the Tasks menu.
    2. Click the ellipsis button next to the HelpSource property.
    3. Locate and select the C1Sample.chm. It is located in the Tutorials/Data folder, by default.
    4. Prepare the C1DynamicHelp control for using in authoring mode:
      1. From the Properties window, set the Form1.KeyPreview property to True.
      2. Override the OnKeyDown method by adding the following code:

        To write code in Visual Basic

        Visual Basic
        Copy Code
        ' toggle authoring mode when the user hits Ctrl+Shift+A
        Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
            If (e.KeyCode = Keys.A And e.Control And e.Shift) Then
                C1DynamicHelp1.AuthoringMode = Not C1DynamicHelp1.AuthoringMode
            End If
            MyBase.OnKeyDown(e)
        End Sub
        

        To write code in C#

        C#
        Copy Code
        // toggle authoring mode when the user hits Ctrl+Shift+A
        override protected void OnKeyDown(KeyEventArgs e)
        {
            if (e.KeyCode == Keys.A && e.Control && e.Shift)
            {
                c1DynamicHelp1.AuthoringMode = !c1DynamicHelp1.AuthoringMode;
            }
            base.OnKeyDown(e);
        }
        
      3. Create a handler for the Form_Load event and insert the following code to instruct the C1DynamicHelp control to subscribe the controls to the events for showing topics:

        To write code in Visual Basic

        Visual Basic
        Copy Code
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            C1DynamicHelp1.TopicMap.Refresh()
        End Sub
        

        To write code in C#

        C#
        Copy Code
        private void Form1_Load(object sender, EventArgs e)
        {
            c1DynamicHelp1.TopicMap.Refresh();
        }
        
    5. Create a handler for the Form_Closing event and insert the following code to ask the user whether to save changes made in the topic map:

      To write code in Visual Basic

      Visual Basic
      Copy Code
      Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
          If (C1DynamicHelp1.TopicMap.HasChanges) Then
              Dim dr As DialogResult
              dr = MessageBox.Show("Would you like to save the changes you made to control/topic map?", "C1DynamicHelp Tutorial", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
              If (dr = DialogResult.Yes) Then
                  C1DynamicHelp1.TopicMap.Save()
              ElseIf (dr = DialogResult.Cancel) Then
                  e.Cancel = True
              End If
          End If
      End Sub
      

      To write code in C#

      C#
      Copy Code
      private void Form1_FormClosing(object sender, FormClosingEventArgs e)
      {
          if (c1DynamicHelp1.TopicMap.HasChanges)
          {
              DialogResult result = MessageBox.Show("Would you like to save the changes you made to control/topic map?", "C1DynamicHelp Tutorial", MessageBoxButtons.YesNoCancel , MessageBoxIcon.Question);
              if (result == DialogResult.Yes)
                  c1DynamicHelp1.TopicMap.Save();
              else if (result == DialogResult.Cancel)
                  e.Cancel = true;
          }
      }
      

    No controls have topics associated with them yet. The application can now be used by a Help author to map topics to controls.