Определите различные типы полей в заполняемом PDF

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

Но если мне нужно пройтись по полям, полученным из PDF, как я могу проверить, является ли поле флажком или текстовым полем или чем-то еще целиком?

PdfCheckBoxField currentField = (PdfCheckBoxField)(form["CheckBox2"]);
currentField.Checked = true;

Как проверить тип поля, если, предположим, я перебираю все поля следующим образом:

for (int i=0; i<form.Count; i++)
{
   field = form.Names[i];
}

Я не нашел много информации на этом сайте PDFsharp. Любая помощь будет оценена.

1 ответ

Решение

Наиболее естественный подход, чтобы определить, какое поле формы вы получаете для form["CheckBox2"] и, в частности, к какому конкретному классу поля формы вы можете привести его, просто определить тип этого объекта. Это может быть сделано путем тестирования совместимости типов с использованием is по ключевому слову или путем проверки на идентичность типа typeof а также GetType():

var currentField = form["CheckBox2"];
if (currentField is PdfCheckBoxField)
{
    // the type of currentField is compatible with PdfCheckBoxField
    PdfCheckBoxField currentCheckBox = (PdfCheckBoxField)currentField;
    ...
}

или же

var currentField = form["CheckBox2"];
if (currentField != null && currentField.GetType() == typeof(PdfCheckBoxField))
{
    // the type of currentField is PdfCheckBoxField
    PdfCheckBoxField currentCheckBox = (PdfCheckBoxField)currentField;
    ...
}

Начиная с C# 7 is Ключевое слово поддерживает сопоставление с шаблоном:

var currentField = form["CheckBox2"];
if (currentField is PdfCheckBoxField currentCheckBox)
{
    // the type of currentField is compatible with PdfCheckBoxField
    // a PdfCheckBoxField variable currentCheckBox here already is declared and initialized with currentField
    ...
}
Другие вопросы по тегам