Microsoft Word文档控件不接受回车 [英] Microsoft Word Document Controls not accepting carriage returns

查看:173
本文介绍了Microsoft Word文档控件不接受回车的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我有一个Microsoft Word 2007文档与几个纯文本格式(我已经尝试了富文本格式以及)控制其通过XML接受输入。

So, I have a Microsoft Word 2007 Document with several Plain Text Format (I have tried Rich Text Format as well) controls which accept input via XML.

有关回车,我不得不通过XML传递的字符串包含\r\\\
当我想一个回车,但是word文档忽略了和只是不停地在同一行包装的东西。我也试过在我的C#映射器System.Environment.NewLine更换\r\\\
,但只是把\r\\\
无论如何,这仍然没有奏效。

For carriage returns, I had the string being passed through XML containing "\r\n" when I wanted a carriage return, but the word document ignored that and just kept wrapping things on the same line. I also tried replacing the \r\n with System.Environment.NewLine in my C# mapper, but that just put in \r\n anyway, which still didn't work.

还要注意的是在控件本身我已经将它设置为允许回车返回(多Paragrpahs)中的控件的属性。

Note also that on the control itself I have set it to "Allow Carriage Returns (Multiple Paragrpahs)" in the control properties.

这是该XML的listMapper

This is the XML for the listMapper

<Field id="32"  name="32" fieldType="SimpleText">
    <DataSelector path="/Data/DB/DebtProduct">
        <InputField fieldType=""  
                    path="/Data/DB/Client/strClientFirm" 
                    link="" type=""/>
        <InputField fieldType=""  
                    path="strClientRefDebt" 
                    link="" type=""/>
    </DataSelector>
    <DataMapper formatString="{0} Account Number: {1}" 
                name="SimpleListMapper" type="">
        <MapperData></MapperData>
    </DataMapper>
</Field>

请注意,这是listMapper C#在这里我实际映射表(注意,我尝试追加system.environment.newline)

Note that this is the listMapper C# where I actually map the list (notice where I try and append the system.environment.newline)

namespace DocEngine.Core.DataMappers
{
    public class CSimpleListMapper:CBaseDataMapper
    {
        public override void Fill(DocEngine.Core.Interfaces.Document.IControl control, CDataSelector dataSelector)
        {
            if (control != null && dataSelector != null)
            {
                ISimpleTextControl textControl = (ISimpleTextControl)control;
                IContent content = textControl.CreateContent();
                CInputFieldCollection fileds = dataSelector.Read(Context);
                StringBuilder builder = new StringBuilder();

                if (fileds != null)
                {
                    foreach (List<string> lst in fileds)
                    {
                        if (CanMap(lst) == false) continue;
                        if (builder.Length > 0 && lst[0].Length > 0)
                            builder.Append(Environment.NewLine);
                        if (string.IsNullOrEmpty(FormatString))
                            builder.Append(lst[0]);
                        else
                            builder.Append(string.Format(FormatString, lst.ToArray()));
                    }

                    content.Value = builder.ToString();

                    textControl.Content = content;
                    applyRules(control, null);
                }
            }
        }
    }
}

没有任何人有任何线索在所有我能得到MS Word 2007中(DOCX)退出无视我的换行符??

Does anybody have any clue at all how I can get MS Word 2007 (docx) to quit ignoring my newline characters??

推荐答案

使用这样的函数:

private static Run InsertFormatRun(Run run, string[] formatText)
{
    foreach (string text in formatText)
    {
        run.AppendChild(new Text(text));
        RunProperties runProps = run.AppendChild(new RunProperties());
        Break linebreak = new Break();
        runProps.AppendChild(linebreak);
    }
    return run;          
}

这篇关于Microsoft Word文档控件不接受回车的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆