首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从“子”对话框中更新父窗体?

问如何从“子”对话框中更新父窗体?
EN

Stack Overflow用户
提问于 2016-04-17 17:02:59
回答 1查看 335关注 0票数 1

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

这是我目前所处的位置:

Main.cs

代码语言:javascript
复制
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); }

Find.cs

代码语言:javascript
复制
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);
}

我的问题是,每当用户单击"Find“时,主表单就不会执行任何操作,直到我实际关闭查找表单或手动关闭Main.Focus()。

而且,创建我自己的事件非常新,所以任何关于正确方式、更干净的方法、更短的编写代码方法的提示都将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-17 17:19:13

父窗体中的TextBox正在更新,但它没有将其选定的文本显示为高亮显示,您可以将文本框的HideSelection属性设置为false,以使其显示选定的文本,使其始终保持高亮显示,即使控件没有焦点。

可以使用此属性将文本高亮显示在文本框控件中,而其他窗体或对话框具有焦点,例如拼写检查器对话框。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36679536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档