我是c#的初學者,我正在研究一個小窗口窗體應用程序,一個文本編輯器,它可以控制我的文本RichTextBox1
。 (更改字體類型,字體大小等)我想創建一個查找和替換對話框到我的項目。它有一個文本框(txtText
),其文本應在RichTextBox1.Text
中檢查,並有一個「查找」按鈕(btnFind
)控件。我的代碼,其中審查並選擇在RichTextBox1.Text
接下來的案文txtText
文本光標所在位置後一致:如何在不創建類的新對象的情況下調用其他類的方法? c#
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);
}
唯一的問題是,這種方法是在我MainForm
類,並查找按鈕,這是Click事件調用此方法在我的FindAndReplaceForm
類中。
我試過這個代碼來調用它:
public partial class FindAndReplaceForm : Form
{
//...
private void btnFind_Click(object sender, EventArgs e)
{
MainForm mf = new MainForm();
mf.FindNextText(txtText.Text);
}
//...
}
,但如果我這樣做,新的MainForm的方法將被調用和執行,並沒有將在原始形式的RichTextBox1.Text
進行選擇。
任何人都可以幫助我如何在不創建類的新對象的情況下調用原始MainForm
的這種方法? 有沒有可能將MainForm
設置爲父項,FindAndReplaceForm
設爲子窗體?
感謝您的幫助!
謝謝!它適用於表單。但是還有一件事我不得不在_mainForm = mainForm:InitializeComponent()方法下加載所有表單的控件和組件,而不僅僅是一個空表單。 – Richtenzorg
@Richtenzorg我已經將該調用添加到構造函數的InitializeComponent。您還應該在構造函數中檢查'main'的'mainForm'參數,但我最初忽略了檢查以縮短代碼。 – Dirk