代码问题。在rtb中搜索文本c#

时间:2010-02-28 18:22:05

标签: c# forms object find richtextbox

我有2个表格

一个包含一个richtextbox,另一个用于搜索此rtb中的文本

我的代码显示错误,我不知道如何修复它。

这是显示错误的行

 RichTextBox box = ((Form1)base.Owner).rtxtEditor;

它说“对象引用未设置为对象的实例。”

这是我的全部代码。

private void frmFind_Shown(object sender, EventArgs e)
    {
        this.txtSearch.Focus();
    }

    private void cmdFind_Click(object sender, EventArgs e)
    {

        RichTextBox box = ((Form1)base.Owner).rtxtEditor;
        int start = box.Find(this.txtSearch.Text, 0);
        if (start == -1)
        {
            this.lblMatch.Text = "No match found";
            this.cmdFindNext.Enabled = false;
        }
        else
        {
            this.lblMatch.Text = "";
            box.Select(start, this.txtSearch.Text.Length);
            this.cmdFindNext.Enabled = true;
            box.ScrollToCaret();
            ((Form1)base.Owner).Focus();
        }
    }

    private void cmdFindNext_Click(object sender, EventArgs e)
    {

            RichTextBox box = ((Form1)base.Owner).rtxtEditor;
            int start = box.Find(this.txtSearch.Text, ((Form1 base.Owner).rtxtEditor.SelectionStart + 1, 0);
            if (start == -1)
            {
                this.lblMatch.Text = "No more matches";
                this.cmdFindNext.Enabled = false;
            }
            else
            {
                box.Select(start, this.txtSearch.Text.Length);
                box.ScrollToCaret();
                ((Form1)base.Owner).Focus();
            }

请帮忙!我的截止日期是2个明天

1 个答案:

答案 0 :(得分:1)

Owner属性为null,除非您手动设置或调用带有Show参数的Form重载。

您需要将显示“查找”表单的代码更改为form.Show(this)