C# 模态窗口,但仅适用于某些窗口
我有一张表格。 此表单可以打开一个编辑器,该编辑器从表单扩展而来。 编辑器中有您单击的链接,这将打开一个模式表单来定义该链接C# 模态窗口,但仅适用于某些窗口,c#,winforms,modal-dialog,C#,Winforms,Modal Dialog,我有一张表格。 此表单可以打开一个编辑器,该编辑器从表单扩展而来。 编辑器中有您单击的链接,这将打开一个模式表单来定义该链接 // Main form private void OnMainForm_MouseClick(object sender, MouseEventArgs e) { Editor editor = new Editor(); editor.Show(); } // editor private void OnEditorLink_MouseClick
// Main form
private void OnMainForm_MouseClick(object sender, MouseEventArgs e)
{
Editor editor = new Editor();
editor.Show();
}
// editor
private void OnEditorLink_MouseClick(object sender, MouseEventArgs e)
{
LinkConfigDialog linkDialog = new LinkConfigDialog();
linkDialog.ShowModal();
}
这可确保用户无法单击并尝试修改已编辑的其他链接(或同一链接)。这是故意的
然而,现在我想让人们打开多个编辑器。我仍然希望模态表单能够工作,但只适用于那些编辑器,而不是整个应用程序
如何实现这一点?我认为您应该在
编辑器中编写一个“冻结”编辑器对话框的方法。例如,通过禁用控件等。然后,您可以在打开LinkDialog
时调用该方法。通过这种方式,您可以拥有多个仅由自己的LinkDialog
s禁用的Editor
实例。您可以使用另一种方法重新启用在关闭LinkDialog
时将调用的控件。为什么不临时隐藏调用者窗口,并在关闭对话框时,像以前一样使其再次可见?我从不隐藏来电窗口,我也不想+1是一个好主意。是的,一个bool,当窗口打开时进行标记,当bool在编辑器上为true时返回所有单击事件。不太理想,因为它不会抓住每一个案例,但有效!“它不会抓住每一个案例”是什么意思?如果有人添加了一个新的click事件来做某事,除非他们记得添加它,否则该检查将不会出现。您可以在编辑器中创建一个公共方法来禁用它(无论您喜欢哪种方式)。您可以在链接对话框
的构造函数中获取一个编辑器
实例,它可以获取该编辑器
实例并调用disable方法,当关闭链接对话框
时,它可以调用另一个启用编辑器对话框
的公共方法。我不明白在这种特殊情况下你需要这些活动做什么。