C# 为什么'Selection.Font.Bold=1'按预期工作,而'Selection.Range.Bold=1'(Word互操作)

C# 为什么'Selection.Font.Bold=1'按预期工作,而'Selection.Range.Bold=1'(Word互操作),c#,ms-word,office-interop,C#,Ms Word,Office Interop,下面是一个使用Word Interop的C#程序: using Microsoft.Office.Interop.Word; class Program { static void Main(string[] args) { Application app = new Application(); app.Visible = true; Document doc = app.Documents.Add(Visible: true)

下面是一个使用Word Interop的C#程序:

using Microsoft.Office.Interop.Word;

class Program
{
    static void Main(string[] args)
    {
        Application app = new Application();
        app.Visible = true;
        Document doc = app.Documents.Add(Visible: true);

        Selection selection = app.Selection;
        selection.TypeText("Hello, friend");
        selection.TypeParagraph();
        selection.Range.Bold = 1;
        selection.TypeText("Hello, world??");
        selection.TypeParagraph();
        selection.Font.Bold = 1;
        selection.TypeText("Hello, world!!");
        selection.TypeParagraph();
    }
}
结果如下:


为什么只有
你好,世界以粗体字体显示,而不是
你好,世界???
?使用
Selection.Range.Bold
Selection.Font.Bold
有什么区别?

尝试Selection.Range.Bold=True而不是=1。可能取决于您的Office版本。非常确定粗体的真实值是
-1
。或者
selection.Font.Bold=true可以工作。我也没有测试过。我正在使用Microsoft Word 12.0对象库。根据intellisense,
Range.Bold
的类型为
int
。将
1
替换为
-1
不起作用,但将
Range
替换为
Font
会起作用(请参阅我对问题的更新)。Selection.TypeText()的作用与您认为的不同。它的影响取决于Options.ReplaceSelection属性,显然它是False。所以文本在选择之前被插入。谢谢,汉斯,但不幸的是,我不能说我更聪明了。我很感激
Selection.TypeText()
在选择之前插入,但我不认为这与问题有什么关系。请尝试Selection.Range.Bold=True而不是=1。可能取决于您的Office版本。非常确定粗体的真实值是
-1
。或者
selection.Font.Bold=true可以工作。我也没有测试过。我正在使用Microsoft Word 12.0对象库。根据intellisense,
Range.Bold
的类型为
int
。将
1
替换为
-1
不起作用,但将
Range
替换为
Font
会起作用(请参阅我对问题的更新)。Selection.TypeText()的作用与您认为的不同。它的影响取决于Options.ReplaceSelection属性,显然它是False。所以文本在选择之前被插入。谢谢,汉斯,但不幸的是,我不能说我更聪明了。我很感激
Selection.TypeText()
在选择之前插入,但我不认为这与问题有什么关系。