我试图为自己创建一个带有一些简单语法功能的文本编辑器。(比如显示一些粗体,不同颜色的特定单词等)。
我使用Windows窗体和Visual C ++,这是我迄今为止所做的: - 我打开了,用String ^读取文件并将其显示在RickTextBox中; - 我已设法仅使用Find()方法设置所需单词的样式,如代码示例中的stylewords()方法所示;
我的目标是在String ^中打开并读取文件,检查并比较每个单词是否要单独设置样式,在我应用样式规则后,我将在richTextBox中加载文本。
/ *这是在RichTextBox控件* /
中加载文档private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
Stream^ myStream;
OpenFileDialog^ openFileDialog1=gcnew OpenFileDialog;
if(openFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)
{
if((myStream=openFileDialog1->OpenFile())!=nullptr)
{
String^ strfilename=openFileDialog1->InitialDirectory + openFileDialog1->FileName;
String^ Readfile=File::ReadAllText(strfilename);
//MessageBox::Show(strfilename);
richTextBox1->Text=Readfile;
myStream->Close();
}
}
stylewords(); //call method to style words
}
我知道我可以使用Find()方法搜索特定的单词并对其应用样式但是从我所知道的内容可以搜索整个字符串中的确切单词,如果我想要样式,请使用再说另外10个不同的词我必须一遍又一遍地做....
void stylewords(){
int index=0;
while (index<richTextBox1->Text->LastIndexOf(textBox1->Text)) {
richTextBox1->Find("abcdef", index, richTextBox1->TextLength, RichTextBoxFinds::WholeWord);
richTextBox1->SelectionFont=gcnew System::Drawing::Font("Tahoma", 16, FontStyle::Italic);
richTextBox1->SelectionColor=Color::DarkBlue;
richTextBox1->Find("xyz", index, richTextBox1->TextLength, RichTextBoxFinds::WholeWord);
richTextBox1->SelectionFont=gcnew System::Drawing::Font("Tahoma", 16, FontStyle::Bold);
richTextBox1->SelectionColor=Color::DarkOrange;
index=richTextBox1->Text->IndexOf(textBox1->Text,index)+1;
}}
随意提出建议或指出我正确的方向! 提前谢谢!