Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

РазработкаОфисныхЗаст

.pdf
Скачиваний:
5
Добавлен:
07.02.2016
Размер:
1.18 Mб
Скачать

161

— для додавання елемента керування зі стилем обтікання "Навколо контуру" слід використовувати перевантаження методу, що приймає ліву і верхню координати елемента керування.

При відкритті шаблону Word в конструкторі Visual Studio, елементи керування, які не є вбудованими, на шаблоні можуть бути не видимими, тому що Visual Studio відкриває шаблон у вигляді Звичайний. Для перегляду елементів керування, змініть вигляд у меню Режим розмітки.

Елементи керування Windows Forms не підтримуються всередині заголовка або нижнього колонтитула або всередині вкладеного документа.

6.2.2.1 Зміна форматування документа з використанням елементів керування CheckBox

Розглянемо принципи використання елементів керування Windows Forms для зміни форматування тексту в налаштуванні рівня документа для Microsoft Office Word.

Перетягніть в документ три елементи керування CheckBox, призначивши їм текст Bold, Italic та Underline. Після цього перемістіть точку вставки під прапорці та введіть наступний текст: “ Встановіть відповідний прапорець, щоб змінити форматування тексту.” Перетягніть в документ елемент керування Bookmark зі вкладки Елементи керування Word в панелі елементів. З'явиться діалогове вікно Додати елемент керування закладками. Виділіть текст, доданий в документ. До виділеного тексту додасться елемент керування Bookmark з ім'ям Bookmark1. У вікні Властивості слід змінити значення властивості (Name) на fontText.

Далі слід написати код форматування тексту при установці або знятті прапорця:

− додайте в клас ThisDocument наступні константи:

const int WordTrue = -1; const int WordFalse = 0;

− додайте наступний код до обробника подій Click прапорця applyBoldFont:

162

private void applyBoldFont_Click (object sender, System.EventArgs e)

{if (this.applyBoldFont.Checked == true)

{this.fontText.Bold = WordTrue;

}

else

{ this.fontText.Bold = WordFalse;

}

}

− додайте наступний код до обробника подій Click прапорця applyItalicFont:

private void applyItalicFont_Click (object sender, System.EventArgs e)

{ if (this.applyItalicFont.Checked == true)

{this.fontText.Italic = WordTrue;

}

else

{this.fontText.Italic = WordFalse;

}

}

− додайте наступний код до обробника подій Click прапорця applyUnderlineFont:

private void applyUnderlineFont_Click (object sender, System.EventArgs e)

{if (this.applyUnderlineFont.Checked == true)

{this.fontText.Underline = Word.WdUnderline.wdUnderlineSingle;

}

else

{this.fontText.Underline = Word.WdUnderline.wdUnderlineNone;

}

}

додати обробники подій для текстових полів до події Startup:

this.applyBoldFont.Click += new EventHandler (applyBoldFont_Click);

163

this.applyItalicFont.Click += new EventHandler (applyItalicFont_Click);

this.applyUnderlineFont.Click += new EventHandler (applyUnderlineFont_Click);

6.2.2.2 Відображення тексту в текстовому полі документа за допомогою кнопки

Розглянемо принципи використання кнопок і текстових полів у налаштуванні рівня документа для Microsoft Office Word. Елементи інтерфейсу користувача, що розглядаються, для документів Word складаються з кнопки (insertText) і текстового поля TextBox

(displayText).

Введіть код, який буде виконуватися при натисканні кнопки:

private void insertText_Click (object sender, EventArgs e) { this.displayText.Text += "Hello World!";

}

У події Startup необхідно додати обробник подій натискання кнопки:

this.insertText.Click += new EventHandler (insertText_Click);

6.2.2.3 Оновлення діаграми в документі за допомогою перемикачів

Розглянемо основні принципи використання перемикачів у налаштуванні на рівні документа Microsoft Office Word для надання користувачам можливості вибору стилів діаграм в документі.

Спочатку слід створити проект документа Word. Для додавання діаграми в документ виберіть на стрічці вкладку Вставити, у групі Текст натисніть кнопку Вставка об'єкту і виберіть пункт Об'єкт. У діалоговому вікні Об'єкт у списку Тип об'єкта на вкладці Створити виберіть Microsoft Smart Tags 2.0 Type Library. Закрийте вікно Режим таблиці, щоб підтвердити значення за замовчуванням для діаграми, і натисніть мишею в документі, щоб перемістити фокус з діаграми. З

164

контекстного меню діаграми виберіть команду Формат об'єкта. На сторінці Стиль діалогового вікна Форматування об'єкта виберіть пункт Квадрат.

Для додавання елементу керування користувача у браузері рішень виберіть проект Параметри діаграми, у меню Проект виберіть команду Додати новий елемент, у діалоговому вікні Додати новий елемент клацніть елемент керування користувача, назвіть елемент керування ChartOptions і натисніть кнопку Додати.

Перетягніть чотири елементи керування Перемикач у елемент керування користувачата та встановіть їм наступні характеристики:

Name: columnChart, Text: Гістограма;

Name: barChart, Text: Лінійчата діаграма;

Name: lineChart, Text: Графік;

Name: areaBlockChart, Text: Заповнена діаграма.

Для доступу до схеми з елементу керування користувача в документі, в проекті повинно бути зазначене посилання

Microsoft.Office.Interop.Graph.

Для забезпечення правильної роботи кнопок створіть для елементу керування користувача відкриту подію, додайте властивість для завдання типу вибору і створіть процедуру для події CheckedChanged кожного перемикача.

Додайте в клас ChartOptions код для створення події

SelectionChanged і властивості Selection:

public event EventHandler SelectionChanged; private Microsoft.Office.Interop.Graph.XlChartType selectedType = Microsoft. Office.Interop.Graph.XlChartType.xlColumnClustered;

public Microsoft.Office.Interop.Graph.XlChartType Selection

{get

{return this.selectedType;

}

set

{this.selectedType = value;

}}

Задайте тип діаграми в обробнику подій CheckedChanged

165

перемикача areaBlockChart і викличте подія:

private void areaBlockChart_CheckedChanged (object sender, EventArgs e)

{if (((RadioButton) sender). Checked)

{this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlAreaStacked;

if (this.SelectionChanged!= null)

{this.SelectionChanged (this, EventArgs.Empty);

}

}

}

Задайте тип діаграми в обробнику подій CheckedChanged перемикача barChart:

private void barChart_CheckedChanged (object sender, EventArgs e)

{if (((RadioButton) sender). Checked)

{this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlBarClustered;

if (this.SelectionChanged!= null)

{this.SelectionChanged (this, EventArgs.Empty);

}

}

}

Задайте тип діаграми в обробнику подій CheckedChanged

перемикача columnChart:

private void columnChart_CheckedChanged (object sender, EventArgs e)

{if (((RadioButton) sender). Checked)

{this.selectedType = Microsoft. Office.Interop.Graph.XlChartType.xlColumnClustered;

if (this.SelectionChanged!= null)

{ this.SelectionChanged (this, EventArgs.Empty);

}

}}

166

Задайте тип діаграми в обробнику подій CheckedChanged перемикача lineChart:

private void lineChart_CheckedChanged (object sender, EventArgs e)

{if (((RadioButton) sender). Checked)

{this.selectedType = Microsoft.Office.Interop.Graph.XlChartType.xlLineMarkers;

if (this.SelectionChanged!= null)

{this.SelectionChanged (this, EventArgs.Empty);

}

}

}

Додайте обробники подій для перемикачів:

public ChartOptions ()

{ InitializeComponent (); areaBlockChart.CheckedChanged += new EventHandler

(areaBlockChart_CheckedChanged); barChart.CheckedChanged += new EventHandler

(barChart_CheckedChanged); columnChart.CheckedChanged += new EventHandler

(columnChart_CheckedChanged); lineChart.CheckedChanged += new EventHandler

(lineChart_CheckedChanged);

}

Додайте елемент керування користувача ChartOptions в документ. Створіть обробник подій для зміни типу діаграми відповідно до параметрыв, обраних у призначеному для користувача елементі керування.

private void ChartOptions1_SelectionChanged (object sender, EventArgs e)

{try

{object index = 1;

Word.Shape shape = this.Shapes.get_Item (ref index);

shape.Activate (); Microsoft.Office.Interop.Graph.Chart dataChart = (Microsoft.

167

Office.Interop.Graph.Chart) shape.OLEFormat.Object; dataChart.ChartType = this.ChartOptions1.Selection;

this.ChartOptions1.Select ();

}

catch (Exception ex)

{ MessageBox.Show (ex.Message);

}

}

Додайте обробник події Startup для елементу керування користувача:

this.ChartOptions1.SelectionChanged += new EventHandler (ChartOptions1_SelectionChanged);

6.2.2.4 Додавання елементів керування в документ під час виконання в надбудові рівня застосування

Можна також додавати елементи керування в будь-який відкритий документ Microsoft Office Word за допомогою надбудови рівня застосування. Розглянемо, як за допомогою стрічки надати користувачам можливість додавати в документ елементи керування

Button або RichTextContentControl.

Створіть проект надбудови рівня застосування для Word з ім'ям

WordDynamicControls. Якщо проект орієнтований на .NET Framework

4, додайте посилання на Microsoft.Office.Tools.Word.v4.0.Utilities.dll.

Додайте персоналізовану вкладку на стрічку в Word. Для додавання елементів керування в документ користувачі зможуть встановлювати прапорці на цій вкладці.

Для цього додайте до документу елемент Стрічка (візуальний конструктор), перетягніть на неї елемент керування Прапорець. Додайте на неї 2 прапорці з іменами: addButtonCheckBox та

addRichTextCheckBox.

Перш ніж можна буде додати елемент керування, в коді надбудови необхідно перетворити активний документ у

Microsoft.Office. Tools.Word.Document. У рішеннях Visual Studio Tools for Office керовані елементи керування можна додавати тільки у ведучі елементи, які відіграють роль контейнерів елементів керування.

168

У проектах надбудов рівня застосування ведучі елементи можуть бути створені тільки під час виконання за допомогою методу

GetVstoObject.

Для додавання та видалення елементів керування в активоу документі додайте в клас ThisAddIn наступний код, що оголошує об'єкти Button і RichTextContentControl, які представляють елементи керування, що будуть додані в документ:

private Microsoft.Office.Tools.Word.Controls.Button button = null;

private RichTextContentControl richTextControl = null;

Додайте наступний метод в клас ThisAddIn, який додає елемент керування Button у поточне виділення в документі, якщо прапорець встановлюється, або видаляє елемент керування Button, якщо прапорець знімається, коли користувач натискає на стрічці прапорець "Додати кнопку":

internal void ToggleButtonOnDocument ()

{ Document vstoDocument = Globals.Factory.GetVstoObject (this.Application.ActiveDocument);

string name = "MyButton";

if (Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked) { Word.Selection selection = this.Application.Selection; if (selection!= null && selection.Range!= null)

{ button = vstoDocument.Controls.AddButton ( selection.Range, 100, 30, name);

}

}

else

{ vstoDocument.Controls.Remove (name);

}

}

Додайте наступний метод в клас ThisAddIn, який при натисканні на другий прапорець додає елемент керування RichTextContentControl в поточне виділення в документі, якщо прапорець встановлюється, або видаляє елемент керування RichTextContentControl, якщо прапорець знімається:

169

internal void ToggleRichTextControlOnDocument ()

{ Document vstoDocument = Globals.Factory.GetVstoObject (this.Application.ActiveDocument);

string name = "MyRichTextBoxControl";

if (Globals.Ribbons.MyRibbon.addRichTextCheckBox.Checked)

{Word.Selection selection = this.Application.Selection; if (selection!= null && selection.Range != null)

{richTextControl = vstoDocument.Controls. AddRichTextContentControl (selection.Range, name);

}

}

else

{vstoDocument.Controls.Remove (name);

}

}

Розглянемо налаштування видалення елемента керування Button програмними засобами при збереженні документа:

private void Application_DocumentBeforeSave (Word.Document Doc, ref bool SaveAsUI, ref bool Cancel)

{ bool isExtended = Globals.Factory.HasVstoObject (Doc); if (isExtended)

{ Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject (Doc);

if (vstoDocument.Controls.Contains (button)) { vstoDocument.Controls.Remove (button);

Globals.Ribbons.MyRibbon.addButtonCheckBox.Checked = false;

}

}

}

Додайте наступний код в обробник подій ThisAddIn_Startup, необхідний для підключення до обробника подій

Application_DocumentBeforeSave події DocumentBeforeSave

this.Application.DocumentBeforeSave += new Word. ApplicationEvents4_DocumentBeforeSaveEventHandler (Application_DocumentBeforeSave);

170

Нарешті змініть обробники подій Click доданих на стрічку прапорців, щоб додавати елементи керування в документ і видаляти їх з документа:

private void addButtonCheckBox_Click (object sender, RibbonControlEventArgs e)

{ Globals.ThisAddIn.ToggleButtonOnDocument ();

}

private void addRichTextCheckBox_Click (object sender, RibbonControlEventArgs e)

{ Globals.ThisAddIn.ToggleRichTextControlOnDocument ();

}

6.2.3 Елементи керування Windows Forms у аркушах Excel

Елементи керування Windows Forms можна додавати в аркуші Microsoft Office Excel тим же способом, яким вони додаються у форми Windows. Однак у Excel існують деякі особливості.

відповідність розміру керуючого елемента розмірам комірки: можна налаштувати елемент керування для автоматичної зміни розміру при зміні розміру батьківської комірки;

додавання компонентів, спільно використовуваних усіма аркушами: можна додати компоненти, які повинні спільно використовуватися всіма аркушами, наприклад, DataSet, в конструктор книги, а не в аркуші. Компонент з'явиться в області компонентів;

формула для впровадження елементів керування: при виборі елемента керування в Excel у рядку формул відображається текст = EMBED ("WinForms.Control.Host", ""). Цей текст є обов'язковим і не підлягає видаленню.

6.2.3.1 Зміна розміру всередині комірок аркуша Excel

При зміні розмірів стовпців або рядків у аркуші розмір елементів керування ведучої програми, що містяться в комірках, автоматично змінюється до висоти або ширини зміненої клітинки. Розмір елементів керування Windows Forms за замовчуванням не змінюється.