Ric*_*org 0 c# methods text class call
我是 c# 的初学者,我正在开发一个小的 Windows 窗体应用程序,一个可以控制我的RichTextBox1. (更改字体类型、字体大小等)我想为我的项目创建一个查找和替换对话框。它有一个 TextBox ( txtText),它的文本应该在 中检查RichTextBox1.Text,还有一个“查找”按钮 ( btnFind) 控件。我有代码,它检查并选择RichTextBox1.Text与txtText光标位置后的文本匹配的下一个文本:
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窗体和子窗体?
感谢您的任何帮助!
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)