RichTextBox内容在保存时不会更新
本文关键字:更新 保存 RichTextBox | 更新日期: 2023-09-27 18:27:23
我的表单中有一个列表框控件,它包含文件夹中特定类型文件的路径。在项目双击时,我将动态地将页面添加到选项卡控件中,并将文件的内容加载到富文本框的对象中。现在我想编辑内容并再次保存。但是,当我打开保存的文件时,编辑的内容不会被保存,它只有在将文件加载到富文本框时存在的早期内容。如何更新富文本框对象文本并保存。
private void lstErrorList_MouseDoubleClick(object sender, MouseEventArgs e)
{
ArrayList errorType = new ArrayList();
RichTextBox myrich = new RichTextBox();
string[] list;
TabPage selectedTab;
if (lstErrorList.Items.Count > 0)
{
string error = lstErrorList.SelectedItem.ToString();
int result = error.LastIndexOf('''');
string filename = error.Substring(result + 1, error.Length - (result + 1));
list = error.Split(new char[] { ''t' });
int pagecount;
TabPage tp = new TabPage();
pagecount = this.tabControl1.TabPages.Count;
bool found = false;
foreach (TabPage tab in tabControl1.TabPages)
{
if (filename.Equals(tab.Name))
{
tabControl1.SelectedTab = tab;
found = true;
break;
}
}
if (!found)
{
tabControl1.TabPages.Add(filename, filename);
tabControl1.SelectedTab = tabControl1.TabPages[tabControl1.TabPages.Count - 1];
int i = tabControl1.TabPages.Count;
myrich.Height = this.tabControl1.Height - 30;
myrich.Width = this.tabControl1.Width - 10;
myrich.Anchor = (AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom);
tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(myrich);
string path = list[7];
objReader = new System.IO.StreamReader(path);
myrich.Text = objReader.ReadToEnd();
objReader.Close();
}
int val = 0;
string val1 = list[3];
string replacement = Regex.Replace(val1, @"'t|'n|'r|[a-zA-Z]", "");
val = Convert.ToInt32(replacement);
foreach (Control ct in tabControl1.SelectedTab.Controls)
{
if (ct is RichTextBox)
{
RichTextBox x = (RichTextBox)ct;
x.Select(val, wordToFind.Length);
x.SelectionBackColor = Color.Wheat;
x.Focus();
break;
}
}
}
}
private void mnuValidate_Click(object sender, EventArgs e)
{
myrich.Refresh();
myrich.Update();
foreach (TabPage page in tabControl1.TabPages)
{
string Saved_File = "";
saveFD.Title = "Save the file";
saveFD.FileName = ChosenFileName;
saveFD.Filter = "Text File|*.txt|Html File|*.html|Xhtml File|*.xhtml|XML File|*.xml";
Saved_File = saveFD.FileName;
foreach (Control ct in tabControl1.SelectedTab.Controls)
{
if (ct is RichTextBox)
{
int x = tabControl1.SelectedTab.Controls.IndexOf(ct);
MessageBox.Show(x.ToString());
((RichTextBox)page.Controls[x]).SaveFile(Saved_File,RichTextBoxStreamType.RichText);
}
}
this.tabControl1.TabPages.Remove(page);
}
lstErrorList.Items.Clear();
if (filePathlist.Count == 0)
{
MessageBox.Show("No input files found,Please upload files and validate again", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (HTML_QC_MultipleFiles.Errors.Checkeditemlist.Count == 0)
{
MessageBox.Show("Please select the error type and validate again", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (singlefile == true)
{
Validate();
}
else
{
bool errorFound = false;
string[] words;
foreach (string file in filePathlist)
{
int lineno, index;
objReader = new System.IO.StreamReader(file);
myrich.Clear();
myrich.Height = this.tabControl1.Height - 30;
myrich.Width = this.tabControl1.Width - 10;
myrich.Anchor = (AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top | AnchorStyles.Bottom);
myrich.Text = objReader.ReadToEnd();
ChosenFileName = file;
Validate();
objReader.Close();
}
}
}
}
}
我认为的问题可能是您的代码要求保存文件名,然后遍历一组控件,将每个控件保存到同一个文件中。如果你有两个富文本框,那么保存第一个的努力可能会被第二个覆盖。
其他需要注意的事项:
- 保存过程中是否出现异常
- 文件是否确实与第一个文件的名称相同
- 当
SaveFile
方法只保存rtf时,为什么要将对话框过滤器保存到*.rtf、*.txt和*.html - 路径操作通常应该通过
System.IO.Path
类来完成 - 考虑为特定的活动引入方法/函数,这样就不会出现如此庞大的代码墙方法