如何将对话框置于所有打开的表单的最上方

Alv*_*vin 4 c#

我有三种形式,主要的,销售和登录。

在主表单中,我有一个计时器,例如5分钟后将启动登录表单。

我可以打开“销售”表单的“主表单”,关闭“主表单”,这样就会启动“登录”表单。

问题是“登录”表单没有集中在“销售”表单的顶部,因此用户必须登录才能使用“销售”表单。

主要形式的一些代码:

public void timer_Tick(object sender, EventArgs e)
        {
            timer.Stop();
    LoginDialog loginForm = new LoginDialog();
                loginForm.TopLevel = true;
                loginForm.ShowDialog();
timer.Start()
}

 private void pbSales_Click(object sender, EventArgs e)
        {
            Sales salesForm = new Sales();
            salesForm .ShowDialog(this);
        }
Run Code Online (Sandbox Code Playgroud)

Pra*_*ana 5

编辑

尝试将两者结合起来可能会适合您。

private void frmMain_Shown(object sender, EventArgs e)
{
// Make this form the active form and make it TopMost
this.ShowInTaskbar = false;
this.TopMost = true;
this.Focus();
this.BringToFront();
this.TopMost = false;
}
Run Code Online (Sandbox Code Playgroud)

试试这个

yourForm.TopMost = true;
Run Code Online (Sandbox Code Playgroud)

要么

Control.BringToFront方法

yourform.BringToFront()
Run Code Online (Sandbox Code Playgroud)


V4V*_*tta 2

我认为问题是您ShowDialog从打电话MainForm,并且您也打开了销售表格。

对话框的父级恰好是MainForm,所以也许您可以尝试使用

loginForm.ShowDialog(saleform1);

salesform1 是您从主窗体打开的销售窗体的实例名称。