Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从子对话框更新父窗体?_C#_Winforms_Events_Dialog - Fatal编程技术网

C# 如何从子对话框更新父窗体?

C# 如何从子对话框更新父窗体?,c#,winforms,events,dialog,C#,Winforms,Events,Dialog,类似于记事本的“查找”方法,您可以在其中查找某个单词,主窗体将突出显示该单词,同时保持“查找”对话框的焦点 到目前为止,我的情况如下: [Main.cs](Windows窗体) [Find.cs](Windows窗体) 我的问题是,每当用户单击“查找下一步”时,主窗体都不会执行任何操作,直到我实际关闭查找窗体或手动关闭Main.Focus() 此外,创建我自己的事件非常新,因此,任何关于编写我的代码的正确方法、更干净的方法、更短的方法的提示都将非常受欢迎。父窗体中的文本框正在更新,但它不会将所选

类似于记事本的“查找”方法,您可以在其中查找某个单词,主窗体将突出显示该单词,同时保持“查找”对话框的焦点

到目前为止,我的情况如下:

[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);
}