如何知道DLL中的对话框窗体是否已启动并打开
本文关键字:启动 是否 窗体 DLL 何知道 对话框 | 更新日期: 2023-09-27 18:29:51
在我们的可重用程序集中,我创建了一个静态类,这样我就可以在程序集的各个部分中调用它,并访问另一个项目并调用它的方法,等等。。。
public static class CommentViewerHelper
{
static CommentViewerHelper()
{
CommentViewer = new CommentViewer();
}
/// <summary>
/// Gives access to PCSCommentViewer public methods and properties.
/// </summary>
public static CommentViewer CommentViewer { get; private set; }
}
此CommentViewer项目有一个表单,用户可以输入注释等。。。我的问题是,我如何才能知道用户是否真的打开了这个CommentViewer程序?我的意思是,是的,我可以随时调用它的方法,但有没有一种方法可以首先知道该程序是否打开?
要检查表单是否打开,可以使用IsHandleCreated属性。
另一方面,如果你首先编写了启动另一个表单的代码,那么你不应该知道这是否发生了吗?
我相信您想要实现的是,即使多次调用对话框,也不会多次(重新)加载对话框的内容。您可以使用"惰性加载"来完成此操作。
创建一个字符串生成器引用并将其设置为null。在初始化中,如果引用为null,则创建字符串生成器对象并将内容加载到其中。如果它不为null,那么您知道内容已经被检索到,您可以简单地使用字符串生成器。
如果您自己创建表单,那么查询AppDomain等应该不会有任何问题。
如果你没有直接访问.NET应用程序信息的方法,你可以尝试这样的方法:
using System.Diagnostics;
private bool ApplicationExists(string appName)
{
foreach (Process currentProcess in Process.GetProcesses("."))
{
if (currentProcess.MainWindowTitle.Length == appName)
{
return true;
}
}
return false;
}