Wie erhält man ein Handle für ein CheckBox-Steuerelement, das mit OpenXML in ein Word-Dokument eingebettet ist?
Sie würden denken, dass entweder Paragraph.ControlPropertiesPart oder Paragraph.Descendents () etwas erreichen würde, aber in jedem einzelnen Fall bekomme ich einen Null-Typ zurück.
Ich kann den Dokumentbaum mit der tatsächlichen XML-Struktur durchziehen, aber das scheint umständlich.
Vorschläge willkommen.
Der folgende Code zeigt, wie Sie alle Kontrollkästchen in einem Word-Dokument auflisten
Verwenden Sie die Decendants<CheckBox>()
-Methode für den Dokumententext.
Um den Namen eines gegebenen Checkbox-Eingabeelements zu bestimmen, müssen Sie auf den
Parent
-Eigenschaft der Instanz CheckBox
und dann nach dem Element FormFieldName
suchen (um einem Kontrollkästchen einen Namen zuzuweisen, verwenden Sie den Eigenschaften-Dialog in Microsoft Word).
Die Eigenschaft DefaultCheckBoxFormFieldState
Val
enthält den Standardstatus für das Kontrollkästchen.
Außerdem enthält die Eigenschaft Val
des Elements Checked
den tatsächlich überprüften Zustand
der Instanz CheckBox
. Beachten Sie, dass die Val-Eigenschaft für Microsoft Word 2007 null
if lautet
Das Kontrollkästchen ist aktiviert.
BEGIN EDIT
Ich möchte meine Antwort erweitern. Tatsächlich gibt es auf der MS Word-Entwickler-Registerkarte zwei Arten von Kontrollkästchen-Steuerelementen - ein Legacy-Kontrollkästchen und ein Kontrollkästchen für ein ActiveX-Steuerelement. Der oben gezeigte Code kann verwendet werden, um Legacy-Checkboxen in einem Word-Dokument aufzuzählen (siehe Artikel zum Erstellen eines Legacy-Kontrollkästchens).
Soweit ich weiß, können Sie das Open XML SDK nicht verwenden, um Werte für ein ActiveX-Kontrollkästchen abzurufen / festzulegen. Sie können jedoch ActiveX-Steuerelemente mit dem folgenden Code aufzählen:
%Vor% Um festzustellen, ob ein gegebenes Control
ein Kontrollkästchen ist, müssen Sie die Klassen-ID des Control
überprüfen. Die Klassen-ID eines Kontrollkästchens lautet {8BD21D40-EC42-11CE-9E0D-00AA006002F3}
.
Hier ist ein Codebeispiel, um die Klassen-ID zu erhalten (ich weiß nicht, ob es einen einfacheren Weg gibt ...):
ENDE BEARBEITEN
BEARBEITEN 2
Ich habe nicht bemerkt, dass es in Word 2010 ein neues Kontrollkästchen gibt (Danke an Dennis Palmer).
Um diese neuen Kontrollkästchen zu nummerieren, können Sie den folgenden Code verwenden:
%Vor%END EDIT 2
Hoffe, das hilft.
Tags und Links c# wordprocessingml openxml office-2010