Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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 - Fatal编程技术网

C#-防止最顶层表单覆盖主应用程序标题

C#-防止最顶层表单覆盖主应用程序标题,c#,winforms,C#,Winforms,我有一个标题为“我的应用程序”的Winforms主应用程序。当主窗体加载时,它将创建另一个窗体,该窗体将悬停在屏幕顶部: Form hoverForm = new Form(); hoverForm.Text = "HoverForm"; hoverForm.TopMost = true; hoverForm.Top = 0; hoverForm.Show(); 这很好: …但我注意到,当我看到对流程标题的任何引用(例如,附加调试器)时,我看到的是最顶层表单的标题,而不是父表单的标题 有没

我有一个标题为“我的应用程序”的Winforms主应用程序。当主窗体加载时,它将创建另一个窗体,该窗体将悬停在屏幕顶部:

Form hoverForm = new Form();
hoverForm.Text = "HoverForm";
hoverForm.TopMost = true;
hoverForm.Top = 0;
hoverForm.Show();
这很好:

…但我注意到,当我看到对流程标题的任何引用(例如,附加调试器)时,我看到的是最顶层表单的标题,而不是父表单的标题


有没有办法在不覆盖流程标题的情况下保留“float-on-top-the-everys”行为?我尝试过AddOwnedForm()之类的方法,但没有成功。

如果将创建悬停表单延迟到稍晚一点,会发生什么情况?我怀疑标题来自创建的第一个表单,可能您是在主表单完成初始化之前创建了悬停表单。我已经将悬停表单的创建/初始化移动到一个按钮单击来测试这一点,但我看到了相同的结果。“流程标题”与此无关,它只是帮助程序员选择正确的进程进行调试的一种帮助。当流程的多个实例当前正在运行时可能有用。继续,您不需要修复这个问题。@HansPassant-调试器和上面的应用程序只是一个例子。real-application是一个企业产品,我正在为它构建一个插件,添加悬停表单。但是,还有其他实用程序/应用程序将根据流程标题中的关键字搜索实际应用程序的某些实例。当我的插件最上面的表单覆盖流程标题时,它会破坏这些其他实用程序/应用程序,这就是为什么我需要对其进行修复。Windows中没有“流程标题”的正式定义。因此,很难猜测其他“实用程序/应用程序”到底在寻找什么。Process.MainWindowTitle属性值得注意,它必须猜测主窗口可能是什么。Windows没有办法说“这是我的主窗口”。它使用一种基本的启发式方法,它枚举进程拥有的窗口,并简单地选择第一个窗口。这往往是该应用程序创建的第一个窗口,由于飞溅或登录窗口而造成的复杂程度。