类似于记事本的“查找”方法,您可以在其中找到某个单词,主表单将突出显示该单词,同时保持“查找”对话框的焦点。
这是我目前所处的位置:
Main.cs
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
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()。
而且,创建我自己的事件非常新,所以任何关于正确方式、更干净的方法、更短的编写代码方法的提示都将是非常感谢的。
发布于 2016-04-17 17:19:13
父窗体中的TextBox正在更新,但它没有将其选定的文本显示为高亮显示,您可以将文本框的HideSelection属性设置为false,以使其显示选定的文本,使其始终保持高亮显示,即使控件没有焦点。
可以使用此属性将文本高亮显示在文本框控件中,而其他窗体或对话框具有焦点,例如拼写检查器对话框。
https://stackoverflow.com/questions/36679536
复制相似问题