如何在RichTextBox顶部显示特定行

时间:2016-10-31 00:23:53

标签: c# richtextbox

我将内容从文本文件拖到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;
    }

我希望这已经足够了。如果没有,请告诉我!

0 个答案:

没有答案