我有一个C# WinForms
应用程序,它利用ControllerBase
来处理与Google Chrome扩展的交互。
当收到结果时,我想显示一个Form
。然而,即使我将Form
设置为TopMost
,沿着的还有其他变体,如BringToFront()
,Form
也不确定地显示“TopMost”,并按预期显示给用户,或者位于屏幕中,用户必须单击屏幕中打开的Form
,然后将其置于前面并聚焦。我不能描述的行为比有时更好的Form
显示预期(即。最上面的),而其他时候它不这样做(即它打开但位于任务栏中)。
如何确保Form
始终显示在用户的最上方?
对于其他上下文,还有另一个Form
,我们将其称为MainForm
,它也在运行并包含ControllerBase
逻辑。MainForm
不一定总是在视图或焦点中,但它正在运行。
[Route("api/example")]
[ApiController]
public class MinimalExampleController : ControllerBase
{
[Route("sendcontent")]
[HttpPost]
public IActionResult OnResultReceived()
{
Form form = new Form();
form.TopMost = true;
form.BringToFront();
form.Focus();
form.ShowDialog();
return Ok();
}
}
1条答案
按热度按时间ewm0tg9j1#
我最终采用了与https://stackoverflow.com/a/60046440/2215712类似的解决方案
我将所有与GUI相关的逻辑(我想展示的
Form
)放在MainForm
中的一个方法中。Form
现在始终显示并位于最顶部。