如何在form2上创建一个查找/搜索按钮,以便在c#中的form1上的富文本框中搜索和突出显示文本

时间:2010-12-05 17:43:01

标签: c# visual-studio-2008

我目前正在使用C#

在Visual Studio 2008中开发一个小型RTF编辑器

我已经完成了几乎所有的接受第二个表单上的查找/查找下一个按钮

Form1包含一个富文本框

form2包含要搜索的文本的文本框和两个按钮 - 查找和查找下一个

当您单击“查找”时,您在form2上的文本框中输入的文本将在form1

中突出显示

我花了好几个小时试图解决这个问题而无法得出结论

有人能帮我一把吗? 提前致谢

我设法找到了一位朋友寻求帮助,现在这就是我的查找按钮,我不确定这是否是最好的方法。

我知道有一个richtextbox.find方法,但我不知道如何使用它 `public partial class frmFind:Form     {         frmRTFEditor frmRTFEditor;

    public frmFind()
    {
        InitializeComponent();
    }

    public frmFind(frmRTFEditor form)
    {
        InitializeComponent();
        frmRTFEditor = form;
        this.TopMost = true;
    }

    private void cmdFind_Click(object sender, EventArgs e)
    {
        lblMatch.Visible = false;
        try
        {
            if (txtSearch.Text == "")
            {
                lblMatch.Visible = true;
            }
            else
            {
                int StartPosition;
                StringComparison SearchType;

                SearchType = StringComparison.OrdinalIgnoreCase;

                StartPosition = frmRTFEditor.rtbDoc.Text.IndexOf(txtSearch.Text, SearchType);

                if (StartPosition < 0)
                {
                    lblMatch.Visible = true;
                }
                else
                {

                    frmRTFEditor.rtbDoc.Select(StartPosition, txtSearch.Text.Length);
                    frmRTFEditor.rtbDoc.ScrollToCaret();
                    frmRTFEditor.Focus();
                    cmdFindNext.Enabled = true;
                }
            }
        }
        catch (Exception)
        {
            lblMatch.Visible = true;
            cmdFindNext.Enabled = false;
        }
    }`

1 个答案:

答案 0 :(得分:1)

从您问题的“声音”中我怀疑您正在尝试编写搜索并突出显示Form2背后的代码中的代码,或者您可能尝试在某处创建循环引用。

我只使用Form2作为UI。从Form1创建它的实例,显示Form2,将输入值读回到Form1中的代码。从那里,您可以访问form1上富文本框中的所有文本。

查找搜索文本的最快捷/最简单的方法可能是包含对richTextBox1.Text.IndexOf(..)的调用的循环