Время прочтения: 3 мин.
В прошлой статье мы остановились на формировании шаблона распоряжения после нажатия кнопки «Пример шаблона» на ленте:
В каждом распоряжении, кем бы оно ни было создано, всегда будут присутствовать дата, номер, название и ответственное лицо. Но количество пунктов в распоряжении всегда будет отличаться. Поэтому давайте реализуем возможность добавления нового пункта в распоряжение с помощью нажатия на кнопку.
Для этого создадим на нашей ленте новую группу:
Теперь в окне свойств элементов управления изменим название группы Group2:
group2.Label =”Пункты распоряжения”.
Теперь в этой группе создадим новую кнопку и свойство Label назначим «Добавить новый пункт».
Вот что должно получиться:
Теперь создадим событие Click для кнопки. Кнопка должна добавлять в конец таблицы новую строку. В первом столбце должен заполняться номер пункта, который равен количеству строк в таблице, во втором столбце должен создаться новый элемент управления содержимым. Прежде чем добавлять новую строку в таблицу, программа должна убедиться, что данный документ содержит только одну таблицу и в ячейке первой строки и первого столбца находится текст «1.». Можно добавить и другие условия для проверки, но мы ограничимся этим.
Код:
//кнопка "Добавить новый пункт"
private void button2_Click(object sender, RibbonControlEventArgs e)
{
int numTbl = 0;
Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
// проверяем что количество таблиц в документе =1
if (doc.Tables.Count == 1)
{
//проверяем содержимое в 1 столбце и 1 строке
if (doc.Tables[1].Cell(1, 1).Range.Text.Length >= 1 && doc.Tables[1].Cell(1, 1).Range.Text.Substring(0, 2) == "1.") numTbl = 1;
}
// если найдена 1 таблица, то добавляем новую строку и новый content control
if (numTbl == 1)
{
Word.Table tbl = doc.Tables[numTbl];
//добавляем новую строку
tbl.Rows.Add();
//находим новое количество строк
int cntRows = tbl.Rows.Count;
//заполняем ячейку в новой строке в 1 столбце
tbl.Cell(cntRows, 1).Range.Text = cntRows.ToString()+".";
//добавляем content control во 2 столбец в новой строке
Word.Range r = tbl.Cell(cntRows, 2).Range;
AddContentControlText(r, "TextPunkt" + cntRows.ToString(), "Пункт распоряжения", "Пункт распоряжения");
}
//выдается сообщение, если кол-во таблиц не равно 1
else MessageBox.Show("В документе не найден раздел с пунктами распоряжения!");
}
Запустим программу. При нажатии на кнопку «Пример шаблона», формируется шаблон распоряжения.
Теперь нажмем на кнопку «Добавить новый пункт». Мы видим, что добавился новый пункт.
Нажимаем еще раз:
В следующих статьях мы рассмотрим пример функционала для пользователя, чтобы он мог выбрать пункт распоряжения и удалить его.