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


Пошаговое руководство. Программирование реакции на события элементов управления NamedRange

В этом пошаговом руководстве демонстрируется добавление элемента управления NamedRange в лист Microsoft Office Excel и создание кода для его событий с помощью средств разработки Office в Visual Studio.

Применение. Сведения этого раздела применяются к проектам уровня документа для Excel 2013 и Excel 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.

В процессе выполнения этого пошагового руководства вы научитесь:

  • Добавление элемента управления NamedRange в лист.

  • Программирование реакции на события элемента управления NamedRange.

  • Тестирование проекта.

ПримечаниеПримечание

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

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

Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.

-

Выпуск Visual Studio 2012, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений Office](bb398242\(v=vs.110\).md).
  • Excel 2013 или Excel 2010.

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

На данном этапе с помощью Visual Studio создается проект книги Excel.

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

  • Создайте проект книги Excel с именем Мои события именованного диапазона.Убедитесь, что выбрано Создать новый документ.Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.

    Visual Studio открывает созданную книгу Excel в конструкторе и добавляет проект My Named Range Events в обозреватель решений.

Добавление в лист текста и именованных диапазонов

Поскольку элементы управления ведущего приложения являются расширенными объектами Office, их можно добавлять в документ таким же образом, как добавляется собственный объект.Например, можно добавить в лист элемент управления Excel NamedRange, открыв меню Вставка, поместив указатель на пункт Имя и выбрав Определить.Можно также добавить элемент управления NamedRange, перетащив его в лист из панели элементов.

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

Добавление диапазона в лист

  1. Убедитесь, что книга My именованный диапазон Events.xlsx открыта в конструкторе Visual Studio Sheet1.

  2. Перетащите элемент управления NamedRange со вкладки Элементы управления Excel панели элементов в ячейку A1 в Sheet1.

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

  3. Убедитесь, что в редактируемом текстовом поле отображается $A$1, и ячейка A1 выбрана.Если ячейка A1 не выбрана, щелкните ее.

  4. Нажмите кнопку ОК.

    Ячейка A1 становится диапазоном namedRange1.Видимых изменений на листе не происходит, однако при выборе ячейки А1 в поле Имя в левом верхнем углу листа отображается namedRange1.

  5. Добавьте другой элемент управления NamedRange в ячейку B3.

  6. Убедитесь, что в редактируемом текстовом поле отображается $B$3, и ячейка B3 выбрана.Если ячейка B3 не выбрана, щелкните ее.

  7. Нажмите кнопку ОК.

    Ячейка В3 становится диапазоном namedRange2.

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

  1. В ячейке A1 введите следующий текст:

    Это пример элемента управления NamedRange.

  2. В ячейке A3 (слева от namedRange2) введите следующий текст:

    События:

В следующих разделах будет написан код, который вставляет текст в namedRange2 и модифицирует свойства элемента управления namedRange2 в ответ на события BeforeDoubleClick, Change и SelectionChange именованного диапазона namedRange1.

Добавление кода в ответ на событие BeforeDoubleClick

Вставка текста в Именованный_Диапазон2 в зависимости от события BeforeDoubleClick

  1. В Обозревателе решений щелкните правой кнопкой мыши Sheet1.vb или Sheet1.cs и выберите Просмотреть код.

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

    Private Sub NamedRange1_BeforeDoubleClick( _
        ByVal Target As Microsoft.Office.Interop.Excel.Range, ByRef Cancel As Boolean) _
        Handles NamedRange1.BeforeDoubleClick
    
        With Me.NamedRange2
            .Value2 = "The BeforeDoubleClick event occurred."
            .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
            .Font.Italic = True
        End With
    End Sub
    
    private void namedRange1_BeforeDoubleClick(
        Microsoft.Office.Interop.Excel.Range Target, ref bool Cancel)
    {
        this.namedRange2.Value2 = "The BeforeDoubleClick event occurred.";
        this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
        this.namedRange2.Font.Italic = true;
    }
    
  3. В C# необходимо добавлять обработчики событий для именованных диапазонов, как показано в описании события Startup ниже.Сведения о создании обработчиков событий см. в разделе Практическое руководство. Создание обработчиков событий в проектах Office.

    this.namedRange1.BeforeDoubleClick += new Microsoft.Office.Interop.Excel.
        DocEvents_BeforeDoubleClickEventHandler(namedRange1_BeforeDoubleClick);   
    
    this.namedRange1.Change += new Microsoft.Office.Interop.Excel.
        DocEvents_ChangeEventHandler(namedRange1_Change);
    
    this.namedRange1.SelectionChange +=new Microsoft.Office.Interop.Excel.
        DocEvents_SelectionChangeEventHandler(namedRange1_SelectionChange);
    

Добавление кода в ответ на событие Change

Вставка текста в Именованный_Диапазон2 в зависимости от события Change

  • Дополните код, чтобы обработчик событий NamedRange1_Change выглядел следующим образом:

    Private Sub NamedRange1_Change(ByVal Target As Microsoft.Office.Interop.Excel.Range) _
        Handles NamedRange1.Change
    
        With Me.NamedRange2
            .Value2 = "The Change event occurred."
            .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue)
            .Font.Italic = False
        End With
    End Sub
    
    private void namedRange1_Change(Microsoft.Office.Interop.Excel.Range Target)
    {
        this.namedRange2.Value2 = "The Change event occurred.";
        this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Blue);
        this.namedRange2.Font.Italic = false;
    }
    
    ПримечаниеПримечание

    Поскольку двойной щелчок мыши по ячейке в диапазоне Excel переводит в режим редактирования, событие Change происходит при перемещении выделения за пределы диапазона, даже если в текст не вносятся изменения.

Добавление кода в ответ на событие SelectionChange

Вставка текста в Именованный_Диапазон2 в зависимости от события SelectionChange

  • Дополните код, чтобы обработчик событий NamedRange1_SelectionChange выглядел следующим образом:

    Private Sub NamedRange1_SelectionChange(ByVal Target As Microsoft.Office.Interop.Excel.Range) _
        Handles NamedRange1.SelectionChange
    
        With Me.NamedRange2
            .Value2 = "The SelectionChange event occurred."
            .AddComment("SelectionChange always occurs before BeforeDoubleClick.")
            .Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black)
        End With
    End Sub
    
    private void namedRange1_SelectionChange(Microsoft.Office.Interop.Excel.Range Target)
    {
        this.namedRange2.Value2 = "The SelectionChange event occurred.";
        this.namedRange2.AddComment("SelectionChange always occurs before BeforeDoubleClick.");
        this.namedRange2.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
    }
    
    ПримечаниеПримечание

    Поскольку двойной щелчок мыши по ячейке в диапазоне Excel приводит к перемещению выделения в диапазон, событие SelectionChange происходит до события BeforeDoubleClick.

Тестирование приложения

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

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

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

  2. Поместите курсор в диапазон namedRange1 и убедитесь, что текст, зависящий от события SelectionChange, вставляется, и следовательно комментарий вставляется в лист.

  3. Дважды щелкните мышью в диапазоне namedRange1 и убедитесь, что текст, зависящий от событий BeforeDoubleClick, вставляется красным курсивом а диапазон namedRange2.

  4. Щелкните мышью вне диапазона namedRange1 и обратите внимание, что событие Change возникает при выходе из режима редактирования, даже если не было сделано никаких изменений в тексте.

  5. Измените текст в namedRange1.

  6. Щелкните мышью вне namedRange1 и убедитесь, что текст, зависящий от события Change, вставляется голубым цветом в диапазон namedRange2.

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

В данном пошаговом руководстве показаны основы программирования реакции на события элемента управления NamedRange.Далее будет рассмотрена следующая задача.

См. также

Задачи

Практическое руководство. Изменения размера элементов управления "NamedRange"

Практическое руководство. Добавление элементов управления NamedRange на листы

Практическое руководство. Создание обработчиков событий в проектах Office

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

Общие сведения о ведущих элементах и элементах управления ведущего приложения

Автоматизация Excel с помощью расширенных объектов

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

Программные ограничения ведущих элементов и элементов управления ведущего приложения