如何在不创建类的新对象的情况下调用其他类的方法?C#

Ric*_*org 0 c# methods text class call

我是 c# 的初学者,我正在开发一个小的 Windows 窗体应用程序,一个可以控制我的RichTextBox1. (更改字体类型、字体大小等)我想为我的项目创建一个查找和替换对话框。它有一个 TextBox ( txtText),它的文本应该在 中检查RichTextBox1.Text,还有一个“查找”按钮 ( btnFind) 控件。我有代码,它检查并选择RichTextBox1.TexttxtText光标位置后的文本匹配的下一个文本:

public void FindNextText(string Text)
{
    int TextSelectionStartIndex;
    int CursorPosition = RichTextBox1.SelectionStart;
    if (RichTextBox1.SelectedText == Text)
    {
        TextSelectionStartIndex= RichTextBox1.Text.IndexOf(Text, CursorPosition + 1);
    }
    else
    {
        TextSelectionStartIndex= RichTextBox1.Text.IndexOf(Text, CursorPosition);
    }
    RichTextBox1.Select(TextSelectionStartIndex, Text.Length);
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,此方法在我的MainForm类中,而调用此方法的单击事件的 Find 按钮在我的FindAndReplaceForm类中。

我试过这段代码来调用它:

public partial class FindAndReplaceForm : Form
{
//...
    private void btnFind_Click(object sender, EventArgs e)
    {
        MainForm mf = new MainForm();
        mf.FindNextText(txtText.Text);
    }
//...
}
Run Code Online (Sandbox Code Playgroud)

但是如果我这样做,新的 MainForm 的方法将被调用和执行,并且在原始表单的RichTextBox1.Text.

谁能帮助我如何在MainForm不创建类的新对象的情况下调用原始方法?是否可以不设置MainForm为父FindAndReplaceForm窗体和子窗体?

感谢您的任何帮助!

Hen*_*man 5

static在 Utils 类中创建它并将 RichTextBox 作为参数传递:

public static void FindNextText(RichTextBox rtb, string Text)
{
    int TextSelectionStartIndex;
    int CursorPosition = rtb.SelectionStart;
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后你称之为:

private void btnFind_Click(object sender, EventArgs e)
{
    //MainForm mf = new MainForm();
    MyUtilsClass.FindNextText(this.RichTextBox1, txtText.Text);
}
Run Code Online (Sandbox Code Playgroud)