Поделиться через


Пошаговое руководство. Создание контекстного меню для закладок

Обновлен: Ноябрь 2007

Применение

Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office.

Тип проекта

  • Проекты уровня документа

Версия Microsoft Office

  • Word 2007

  • Word 2003

Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов.

Это пошаговое руководство демонстрирует, как создавать контекстные меню для элементов управления Bookmark в настройках на уровне документа для Word. Когда пользователь щелкает правой кнопкой мыши текст в закладке, появляется контекстное меню, содержащее параметры для форматирования текста.

В этом руководстве описываются следующие задачи.

  • Добавление текста и закладок в документ в проекте уровня документа во время разработки.

  • создание контекстного меню;

  • проверка перекрывающихся закладок.

47cs5caa.alert_note(ru-ru,VS.90).gifПримечание.

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Обязательные компоненты

Для выполнения инструкций данного пошагового руководства необходимы указанные ниже компоненты.

  • Visual Studio Tools for Office (необязательный компонент Visual Studio 2008 Professional и Visual Studio Team System).

  • Microsoft Office Word 2003 или Microsoft Office Word 2007.

Visual Studio Tools for Office устанавливается по умолчанию с перечисленными версиями Visual Studio. Чтобы проверить, установлен ли данный пакет инструментов, см. раздел Установка средств Visual Studio для Office.

Создание проекта

Сначала следует создать проект документа Word в Visual Studio.

Создание нового проекта

  • Создайте проект документа Word с именем Мое контекстное меню закладок. Выберите в мастере Создать новый документ. Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Visual Studio Tools for Office.

    Visual Studio откроет новый документ Word в режиме конструктора и добавит проект Мое контекстное меню закладок в Обозреватель решений.

Добавление текста и закладок в документ

Добавьте текст в документ, а затем добавьте 2 перекрывающиеся закладки.

Добавление текста в документ

  • Введите следующий текст.

    Это пример создания контекстного меню, появляющегося при щелчке правой кнопкой мыши текста закладки.

Добавление элемента управления "Закладка" в документ

  1. Из закладки Элементы управления Word объекта Панель элементов перетащите элемент управления Bookmark в документ.

    Откроется диалоговое окно Добавление элемента управления "Закладка".

  2. Выберите параметр создавать контекстное меню при нажатии текста правой кнопкой мыши и нажмите кнопку .

    В документ добавляется bookmark1.

  3. Добавьте другой элемент управления Bookmark к параметру щелкнуть текст в закладке правой кнопкой мыши.

    В документ добавляется bookmark2.

    47cs5caa.alert_note(ru-ru,VS.90).gifПримечание.

    Слова щелкнуть текст правой кнопкой мыши находятся в bookmark1 и bookmark2.

При добавлении закладки к документу во время разработки создается элемент управления Bookmark. Можно запрограммировать несколько событий в закладке. Можно записать код в событие BeforeRightClick закладки, чтобы при нажатии пользователем правой кнопкой мыши текста в закладке появлялось контекстное меню.

Создание контекстного меню

Создание контекстного меню

  1. Правой кнопкой мыши щелкните ThisDocument в Обозревателе решений, а затем нажмите Просмотреть код.

  2. Объявите переменные CommandBar и переменные закладки на уровне класса.

    Private commandBar As Office.CommandBar
    Private selectedBookmark As Microsoft.Office.Tools.Word.Bookmark
    WithEvents boldText As Office.CommandBarButton
    WithEvents ItalicText As Office.CommandBarButton
    
    private Office.CommandBar commandBar;
    private Office.CommandBarButton boldText;
    private Office.CommandBarButton italicText;
    private Microsoft.Office.Tools.Word.Bookmark selectedBookmark;
    
    const int WordTrue = -1;
    const int WordFalse = 0;
    
  3. Добавьте метод для создания меню.

    Private Sub AddPopUp()
    
        commandBar = Application.CommandBars.Add( _
            "FormatText", Office.MsoBarPosition.msoBarPopup, , True)
    
        ' Add a button and set the style, caption, icon and tag.
        boldText = CType(commandBar.Controls.Add(1), Office.CommandBarButton)
    
        With boldText
            .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
            .Caption = "Bold"
            .FaceId = 113
            .Tag = "0"
        End With
    
        ' Add a button and set the style, caption, icon and tag.
        ItalicText = CType(commandBar.Controls.Add(1), Office.CommandBarButton)
    
        With ItalicText
            .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
            .Caption = "Italic"
            .FaceId = 114
            .Tag = "1"
        End With
    
        CType(Me.AttachedTemplate, Microsoft.Office.Interop.Word.Template).Saved = True
    
    End Sub
    
    private void AddPopUp()
    {
        commandBar = Application.CommandBars.Add("FormatText",
            Office.MsoBarPosition.msoBarPopup, missing, true);
    
        // Add a button and set the style, caption, icon and tag.
        boldText = (Office.CommandBarButton)commandBar.Controls.Add(
            1, missing, missing, missing, missing);
    
        boldText.Style = Office.MsoButtonStyle.msoButtonCaption;
        boldText.Caption = "Bold";
        boldText.FaceId = 113;
        boldText.Tag = "0";
    
        // Add a button and set the style, caption, icon and tag.
        italicText = (Office.CommandBarButton)commandBar.Controls.Add(
            1, missing, missing, missing, missing);
    
        italicText.Style = Office.MsoButtonStyle.msoButtonCaption;
        italicText.Caption = "Italic";
        italicText.FaceId = 114;
        italicText.Tag = "1";
    
        // Handle the click events with the ButtonClick procedure.
        boldText.Click += new Microsoft.Office.Core
            ._CommandBarButtonEvents_ClickEventHandler(ButtonClick);
    
        italicText.Click += new Microsoft.Office.Core
            ._CommandBarButtonEvents_ClickEventHandler(ButtonClick);
    
        ((Microsoft.Office.Interop.Word.Template)this.AttachedTemplate).Saved = true;
    }
    
  4. Вызовите AddPopup из события Startup документа ThisDocument.

    Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As _
        System.EventArgs) Handles Me.Startup
    
        AddPopUp()
    End Sub
    
    private void ThisDocument_Startup(object sender, System.EventArgs e)
    {
        AddPopUp();
    }
    

Форматирование текста в закладке

  1. Добавьте обработчик событий ButtonClick, чтобы применить форматирование к закладке.

    Private Sub ButtonClick(ByVal ctrl As Office.CommandBarButton, _
        ByRef Cancel As Boolean) Handles boldText.Click, ItalicText.Click
    
        Select Case ctrl.Caption
            Case "Bold"
                selectedBookmark.Bold = Not selectedBookmark.Bold
            Case "Italic"
                selectedBookmark.Italic = Not selectedBookmark.Italic
        End Select
    
        Me.ActiveWindow.SetFocus()
    End Sub
    
    private void ButtonClick(Microsoft.Office.Core.CommandBarButton Ctrl, 
        ref bool CancelDefault)
    {
        if (Ctrl.Caption == "Bold")
        {
            if (selectedBookmark.Bold == WordTrue)
            {
                selectedBookmark.Bold = WordFalse;
            }
            else 
            {
                selectedBookmark.Bold = WordTrue;
            }
        }
        else if (Ctrl.Caption == "Italic")
        {
            if (selectedBookmark.Italic == WordTrue)
            {
                selectedBookmark.Italic = WordFalse;
            }
            else
            {
                selectedBookmark.Italic = WordTrue;
            } 
        }
    }
    
  2. Добавьте обработчик событий showPopupMenu для обработки события BeforeRightClick обеих закладок.

    47cs5caa.alert_note(ru-ru,VS.90).gifПримечание.

    Для работы с перекрывающимися закладками необходимо записать код. В противном случае по умолчанию код будет вызван для всех выбранных закладок.

    Private Sub showPopupMenu(ByVal sender As Object, ByVal e _
        As Microsoft.Office.Tools.Word.ClickEventArgs) _
        Handles Bookmark1.BeforeRightClick, Bookmark2.BeforeRightClick
    
        Dim startPosition As Integer = 0
        Dim i As Integer
    
        ' If bookmarks overlap, get bookmark closest to cursor.
        For i = 1 To e.Selection.Bookmarks.Count
            If e.Selection.Bookmarks(i).Start > startPosition Then
                startPosition = e.Selection.Bookmarks(i).Start
            End If
        Next
    
        ' If closest bookmark is the sender, show the popup.
        If DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark).Start = _
            startPosition Then
            selectedBookmark = DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark)
            commandBar.ShowPopup()
            e.Cancel = True
        End If
    End Sub
    
    private void showPopupMenu(object sender, 
        Microsoft.Office.Tools.Word.ClickEventArgs e)
    {
        int startPosition = 0;
    
        // If bookmarks overlap, get bookmark closest to cursor.
        for (int i = 1; i <= e.Selection.Bookmarks.Count; i++)
        {
            object o = i;
            if (e.Selection.Bookmarks.get_Item(ref o).Start > startPosition)
            {
                startPosition = e.Selection.Bookmarks.get_Item(ref o).Start;
            }
        }
    
        // If closest bookmark is the sender, show the popup.
        if (((Microsoft.Office.Tools.Word.Bookmark)sender).Start == startPosition)
        {
            selectedBookmark = (Microsoft.Office.Tools.Word.Bookmark)sender;
            commandBar.ShowPopup(missing, missing);
            e.Cancel = true;
        }
    
    
    }
    
  3. В C# также необходимо добавить обработчики событий для элементов управления закладки в событие Startup. Дополнительные сведения о создании обработчиков событий см. в разделе Практическое руководство. Создание обработчиков событий в пакете инструментов Visual Studio для Office.

    this.bookmark1.BeforeRightClick += new Microsoft.Office.Tools.Word.
        ClickEventHandler(showPopupMenu);
    
    this.bookmark2.BeforeRightClick += new Microsoft.Office.Tools.Word.
        ClickEventHandler(showPopupMenu);
    

Проверка работы приложения

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

Проверка документа

  1. Нажмите клавишу F5 для запуска проекта.

  2. Щелкните правой кнопкой мыши в первой закладке и выберите Полужирный.

  3. Убедитесь в том, чтобы весь текст в bookmark1 был отформатирован полужирным шрифтом.

  4. Щелкните правой кнопкой мыши текст в том месте, где закладки перекрывают друг друга, и выберите Курсив.

  5. Убедитесь в том, что курсивом отображается весь текст в bookmark2 и только часть текста в bookmark1, перекрывающей bookmark2.

Следующие действия

Далее будут рассмотрены следующие задачи:

См. также

Основные понятия

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

Настройка пользовательского интерфейса Office

Элементы управления Bookmark

Общие сведения о необязательных параметрах в решениях Office

Другие ресурсы

Элементы управления ведущего приложения Word