C# 如何从子对话框更新父窗体?
类似于记事本的“查找”方法,您可以在其中查找某个单词,主窗体将突出显示该单词,同时保持“查找”对话框的焦点 到目前为止,我的情况如下: [Main.cs](Windows窗体) [Find.cs](Windows窗体) 我的问题是,每当用户单击“查找下一步”时,主窗体都不会执行任何操作,直到我实际关闭查找窗体或手动关闭Main.Focus()C# 如何从子对话框更新父窗体?,c#,winforms,events,dialog,C#,Winforms,Events,Dialog,类似于记事本的“查找”方法,您可以在其中查找某个单词,主窗体将突出显示该单词,同时保持“查找”对话框的焦点 到目前为止,我的情况如下: [Main.cs](Windows窗体) [Find.cs](Windows窗体) 我的问题是,每当用户单击“查找下一步”时,主窗体都不会执行任何操作,直到我实际关闭查找窗体或手动关闭Main.Focus() 此外,创建我自己的事件非常新,因此,任何关于编写我的代码的正确方法、更干净的方法、更短的方法的提示都将非常受欢迎。父窗体中的文本框正在更新,但它不会将所选
此外,创建我自己的事件非常新,因此,任何关于编写我的代码的正确方法、更干净的方法、更短的方法的提示都将非常受欢迎。父窗体中的
文本框正在更新,但它不会将所选文本显示为突出显示的文本,您可以将文本框的属性设置为false
,使其始终以高亮显示的方式显示所选文本,即使控件没有焦点
可以使用此属性在文本框中保持文本高亮显示
控件,而另一窗体或对话框具有焦点,例如
“拼写检查器”对话框
private new Find FindForm;
private delegate void FindNextCallback(int s, int l);
private cmdFind_Click(object sender, EventArgs e)
{
FindForm = new Find(txtInput.Text);
FindForm.FindNext += new FindEventHandler(FoundNext);
FindForm.Show();
}
private void FoundNext(object sender, FindEventArgs e)
{
Invoke(new FindNextCallback(SelectFoundText), new object[] { e.Start, e.Length });
}
private void SelectFoundText(int s, int l) { txtInput.Select(s, l); }
private static FindEventArgs FindArgs;
public event FindEventHandler FindNext;
private void cmdFindNext_Click(object sender, EventArgs e)
{
FindArgs = new FindEventArgs(startingPosition, selectionLength);
FindNext?.Invoke(null, FindArgs);
}