我想将两个字符串与wingdings 字符进行比较。因为我不知道如何在 C# 字符串中捕获wingdings 代码,所以我无法在两个字符串之间进行可靠的比较......
上下文:C#/Word
问题描述
我有一个带有复选框的 word 文档。此复选框是一个侧翼。我的挑战是说是否使用 C# 选中了此复选框。
我知道如果捆绑的字符串等于这个侧翼字符之一,就会检查checkbow x
,ý
并且þ
否则复选框未选中。
在你的帮助下
在您的帮助下,我的问题有了解决方案:),现在,我还有另一个问题 :))
正如我在顶部所说,所有这一切都是为了将侧翼字符(复选框)与代表选中复选框的所有可能的侧翼进行比较。现在,当我直接将单词中的复选框与编码的侧翼进行比较时,我找不到该字符,因为它是以其他格式编码的......
但是当我创建一个word文档并输入编码字符然后将我创建的字符与目标word doc进行比较时,我有我想要的:)但是你看到的这个解决方案需要创建一个新的word doc :(
无论如何,这是我的解决方案:)
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.Office.Interop.Word;
namespace Project0
{
class Program
{
static bool isChecked(Range rng)
{
var wrdApp = new Application();
wrdApp.Visible = true;
Document wrdDoc = wrdApp.Documents.Add();
Range Rngg = wrdDoc.Paragraphs[1].Range;
Rngg.Font.Name = "WingDings"; // Why I CREATE A SECOND DOC - I Need this font ;(
List<string> list = new List<string>{ "\u00fe", "\u00fd", "\u0078" };
foreach (string k in list)
{
if (rng.Text.Contains(Rngg.Text))
{
return true;
}
}
return false;
}
static void Main(string[] args)
{
List<string> list = new List<string> { "\u00fe", "\u00fd", "\u0078" };
// string wPath = @"C:\DV\test.docx";
// Document wrdDoc = wrdApp.Documents.Open(FileName: wPath, ReadOnly: false);
var wrdApp = new Application();
wrdApp.Visible = true;
Document wrdDoc = wrdApp.Documents.Add();
// I SIMULATE MY DOC
wrdDoc.Paragraphs[1].Range.Font.Name = "WingDings";
wrdDoc.Paragraphs[1].Range.Text = list[1]; // I put a checked box
// CAN I DETERMINE IF THERE IS A CHECKBOX
if (isChecked(wrdDoc.Paragraphs[1].Range))
{
Console.WriteLine("Heeah, there's a checked checkbox !!");
}
}
}
}
提前感谢您的所有帮助:)