我想在RichTextBox中设置文本格式,如下例所示:
“这里有一个标签空间”文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。
“此处有一个选项卡空间”文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本
“这里的标签空间”文本文本文本文本文本文本文本文本文本文本文本文本文本文本。
如果我在word中格式化文本并将其粘贴到RichTextBox控件中,我可以看到以我正在寻找的格式“样式化”。一旦我提交文本并调试RichTextBox内容,每行开头的制表符空间就会消失。
Side注意:我对实现这一点非常感兴趣,因为我使用此控件将其粘贴到python脚本中。
我该如何避免?
修改
我有以下代码:
var html = string.Empty;
var wholeText = new TextRange(block.ContentStart, block.ContentEnd);
html += wholeText.Text;
在调试模式下,我看一下wholeText.Text以查看文本的格式(我可以将其视为text / html或xml编辑器)。在这一点上,我没有看到我之前描述的标签空间。
答案 0 :(得分:0)
使用以下方法找到我的问题的解决方案:
typedef bool(*Callback)(string, string);
using namespace std;
class MyVisitor : public tinyxml2::XMLVisitor {
public:
bool VisitExit(const tinyxml2::XMLElement &e) {
// return callback(e.Name(), e.GetText());
return true;
}
Callback callback;
};
/** Typedef to hopefully save on confusing syntax later */
typedef std::function< bool(const char * element_name, const char * element_text) > visitor_fn;
class MyBoundVisitor : public tinyxml2::XMLVisitor {
public:
MyBoundVisitor(visitor_fn fn) : callback(fn) {}
bool VisitExit(const tinyxml2::XMLElement &e) {
return callback(e.Name() == nullptr ? "\0" : e.Name(), e.GetText() == nullptr ? "\0": e.GetText());
}
visitor_fn callback;
};
bool
myCallBackFunc(string e, string v) {
cout << "Element " << e << " has value " << v << endl;
return true;
}
int
main()
{
tinyxml2::XMLDocument doc;
doc.LoadFile("somefile.xml");
MyVisitor visit;
visit.callback = myCallBackFunc;
doc.Accept(&visit);
visitor_fn fn = myCallBackFunc; // copy your function pointer into the std::function<> type
MyBoundVisitor visit2(fn); // note: declare this outside the Accept(..) , do not use a temporary
doc.Accept(&visit2);
}