控制表单2中表单1上的富文本框控件

时间:2014-10-09 18:23:13

标签: c# winforms

如果这看起来非常明显或者是一个非常常见的问题,我很抱歉,但我一直在搜索和查看帖子一段时间,我似乎仍然无法得到它。

我刚开始学习C#,我为自己设置了一个小项目,围绕一个带有一些额外功能的richtextbox控件创建一个文字处理器。

我目前正在增加'查找& amp;替换'文本,以下代码在与富文本框控件使用相同的表单时正常工作。

richTextBox1.Rtf = richTextBox1.Rtf.Replace("bob", "bill");

我不想使用对话框或类似的东西,我直接来自我们的老朋友VB6,所以我不确定它们是否仍然存在,所以我正在做一个外部形式有点像对话框,我希望用户能够输入文本来查找和替换,然后按好,然后被发送回主表单,听起来很简单,可能是,我不确定我错过了什么......

private void findReplaceToolStripMenuItem_Click(object sender, EventArgs e)
{
    Form3 AboutBox = new Form3();
    AboutBox.ShowDialog();
}

我已经尽力实现了我在这里阅读的一些答案,其中一个我设法能够控制form1,但前提是我用{{1}打开了一个新的实例在代码之后,这在我想要实现的目标中是无用的。

我已将richTextBox1.Modifiers设置为Public,但我仍然对这个问题感到头疼。

1 个答案:

答案 0 :(得分:1)

我没有公开RichTextBox,而是将属性添加到另一个表单中,该表单返回该控件的文本,如下所示:

public class SearchForm : Form
{
    public string SearchTerm
    {
        get { return richTextBox1.Text; }
    }

    ...

当用户关闭"搜索"表单,您可以通过引用属性来获取搜索词:

private void findReplaceToolStripMenuItem_Click(object sender, EventArgs e)
{
    string searchTerm;

    using (var searchForm = new SearchForm())  // used 'using' to dispose the form
    {
        searchForm.ShowDialog();

        searchTerm = searchForm.SearchTerm;
    }

    // do something with searchTerm
}

您会发现这使维护更易于管理。在一个表单中更改控件的名称不应该要求您在使用它们的任何其他表单中进行更改。