我将内容从文本文件拖到RichTextBox中。我已将RichTextBox设置为一次只显示6行的位置。我有一个搜索方法,可以在RichTextBox中找到我需要的文本,但我需要它做的是显示6条特定的行。每个"项目"在我的文本文件中包含6行。无论搜索方法找到文本的六行中的哪一行,我都需要RichTextBox才能显示每个" item"的6行。与当前选中"找到"文字仍然突出显示。
由于我从这个网站上提取的一些代码示例,我已经让它运行得相当好。但是时不时地,它并没有完全发挥作用,我正在寻找一些新的眼睛看一下我的代码的建议,甚至可能会被告知更简单/更有效的方法。但到目前为止,这是我的代码。提前谢谢!
try
{
string s = txtFindPlaylistEntry.Text;
rtxEditPlaylistEntry.Focus();
findPosEntry = rtxEditPlaylistEntry.Find(s, findPosEntry, RichTextBoxFinds.None);
// Jump to the line we need.
int count = rtxEditPlaylistEntry.GetLineFromCharIndex(findPosEntry);
count = (count - (count % 6)) + 1; // Must be divisible by 6 then plus 1
rtxEditPlaylistEntry.SelectionStart = rtxEditPlaylistEntry.Find(rtxEditPlaylistEntry.Lines[count]);
rtxEditPlaylistEntry.ScrollToCaret();
rtxEditPlaylistEntry.Select(findPosEntry, s.Length);
findPosEntry += txtFindPlaylistEntry.Text.Length;
}
catch
{
MessageBox.Show("No occurences found");
findPosEntry = 0;
}
截至目前,我正在尝试使用模数加1的行数来获取我需要的行。就像我说的那样,它起作用,不是100%的时间,我无法弄清楚原因。
编辑以尝试适应最小,完整,可验证。
我已经发布了我的"发现"功能。以下是其他可能有用的相关代码。首先,这是我创建我正在使用的各种控件的代码。
rtxEditPlaylistEntry = new RichTextBox();
rtxEditPlaylistEntry.Location = new System.Drawing.Point(15, 90);
rtxEditPlaylistEntry.Size = new System.Drawing.Size(375, 85);
rtxEditPlaylistEntry.Multiline = true;
rtxEditPlaylistEntry.ScrollBars = RichTextBoxScrollBars.None;
这是我的按钮功能,用于从文件中提取文本并将其放入RichTextBox。
private void btnBrowseForPlaylistToEditEntry_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "LPL Files|*.lpl";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
savedFileNameEntry = openFileDialog.SafeFileName;
txtPathToPlaylistToEditEntry.Text = openFileDialog.FileName;
}
// After finding the file, load it into the richtextbox control
using (StreamReader sr = File.OpenText(openFileDialog.FileName))
{
// Initially show the first 6 lines (IE first entry). This should be accomplished by
// the richtextbox control settings
rtxEditPlaylistEntry.Text = sr.ReadToEnd();
}
previousNextCount = 0;
}
我希望这已经足够了。如果没有,请告诉我!