C# 如何在另一个表单c上的richtextbox中查找文本#

C# 如何在另一个表单c上的richtextbox中查找文本#,c#,forms,find,hyperlink,richtextbox,C#,Forms,Find,Hyperlink,Richtextbox,我有两个表单,一个包含richtextbox,另一个用于在rtb中查找文本 在这个查找表单上有一个文本框和两个按钮,“查找”和“FindNext” 我不知道如何将这两个表单链接在一起来查找文本,也不知道如何查找文本 :-S 请提供任何帮助???对于每个表单,您可以添加一个引用其他表单的属性。这将允许您通过属性访问另一个窗体及其上的所有控件 public property Form RTForm { get; set;} 然后可以在构造表单的位置设置此属性 Form myForm = new F

我有两个表单,一个包含richtextbox,另一个用于在rtb中查找文本

在这个查找表单上有一个文本框和两个按钮,“查找”和“FindNext”

我不知道如何将这两个表单链接在一起来查找文本,也不知道如何查找文本

:-S


请提供任何帮助???

对于每个表单,您可以添加一个引用其他表单的属性。这将允许您通过属性访问另一个窗体及其上的所有控件

public property Form RTForm { get; set;}
然后可以在构造表单的位置设置此属性

Form myForm = new Form();
Form rtForm = new RTForm();
myForm.RTForm = rtForm();

有几种方法。您只需在包含richtextbox的一个表单上定义一个属性,其他表单可以找到该属性

public static string RTextboxText
{
    get
    {
        return myrichtextbox.Text;
    }
    set
    {
        myrichtextbox.Text = value;
    }
}
Setter可以从ofc中删除


另一种方法是在两个窗体之间使用类。我想你也会在文字上使用具体的动作?您可能希望将所有关于该类的代码也放在该类中。

您可能希望参考以下内容:如果您澄清两个表单之间的关系,这可能会很有用:带有RichTextBox的表单是否创建了Find表单,或者两者都是以其他方式创建的?“查找”窗体是否是带有RichTextBox的窗体的子窗体?您是否以模式显示查找表单?另外,您是否熟悉如何定义和引发自定义事件?嗯,带有richtextbox的表单有一个按钮“查找”。如果单击此按钮,将打开查找表单。我不知道你还问什么。我对编程很陌生:-SHi Christina,这可能有助于我们了解你的“新”程度。你认为你“准备好”学习筹款活动了吗?从长远来看,imho,您需要学习如何以一种形式定义和引发事件,而另一种形式可以订阅;并通过事件将数据从一种形式传递到另一种形式。现在我想你需要一本关于WinForms的好书,比如Matthew MacDonald的《Pro.NET 2.0 Windows窗体和自定义控件》,然后系统地完成介绍章节。另外,在.NET中查找RichTextBox.Find的MSDN文档。她还必须将试图引用的RichTextBox公开;更改声明,如受保护的Syste.Windows.Forms.RichTextBox RTB;到公共Syste.Windows.Forms.RichTextBox RTB@Steve您的建议将要求修改表单的Designer.cs文件,这不是一件好事,原因有很多:如果您检查一个典型的WinForm Designer.cs文件,您将看到文本框和其他控件的声明使用“private modifier,not”保护。但是,如果OP在运行时创建RichTextBox,并将其插入到另一个表单中,则情况会有所不同:但是,在本例中,我们几乎可以肯定他们没有这样做。@BillW--如果在设计器中显示表单并将框的“modifier”属性更改为public,则更改访问修饰符正是设计器自己要做的事情。这是一件非常好的事情。@Steve+1让我质疑我的假设,谢谢。现在,您让我开始了一项“任务”,以找出我为什么认为WinForms控件永远不应该更改其访问属性!我相信我已经读过很多次了,你不应该这样做(例如,公开控件),但现在是时候重新检查一下了。然而,我确实同意表单之间的“通信”应该通过“引发事件”或“公共属性”来实现的想法:也就是说,“松散耦合”的一般想法是最好的。BillW-您不应该做的是手动更改生成的文件,例如
.designer
文件,因为这些文件可能会被覆盖。