Как найти индекс вставляемой таблицы - PullRequest
2 голосов
/ 07 октября 2019

Я работаю над своим первым приложением C #, которое добавит кнопку на ленту MS Word, которая вставит новую таблицу в документ. Содержимое таблицы необходимо заполнить, используя значение из предыдущей таблицы в документе (если оно существует). Я могу вставить таблицу, но не могу найти лучший способ найти предыдущую таблицу. Я создаю новую таблицу, а затем получаю общее количество таблиц с этим:

Word.Range rng = Application.Selection.Range;
rng.Font.Name = "Times New Roman";
rng.Font.Size = 10;
rng.InsertParagraphAfter();
rng.SetRange(rng.End, rng.End);

// Add the table.
Word.Table tbl = rng.Tables.Add(rng, 13, 2, ref missing, ref missing);
var number_of_tables = this.Application.Documents[1].Tables.Count;

Однако, где я застрял, пытается выяснить индекс вновь вставленной таблицы, чтобы я мог сделать что-то вроде этого:

var new_table_index = tbl...some code here...
if (new_table_index > 1)
{
    previous_table = this.Application.Documents[1].Tables[new_table_index - 1];
}

Как найти индекс только что вставленной таблицы? Спасибо!

1 Ответ

1 голос
/ 08 октября 2019

Обычный способ сделать это - подсчитать количество таблиц от начала документа до рассматриваемой таблицы. В этом случае в диапазон добавленной таблицы затем вычтите одну, чтобы получить предыдущую таблицу.

// Add the table.
Word.Table tbl = rng.Tables.Add(rng, 13, 2, ref missing, ref missing);

//Define a range from the start of doc to new table
Word.Range rngDocToTable = tbl.Range;
rng.Start = doc.Content.Start;
int nrTablesInRange = rng.Tables.Count;

//Get index of previous table
int indexPrevTable = nrTablesInRange - 1;
Word.Table previousTable = null;
if (indexPrevTable > 0)
{
    previousTable = doc.Tables[indexPrevTable];
}
else
{
    System.Windows.Forms.MessageBox.Show("No previous tables");
}
...