新表格开始集中,但在后台

时间:2014-07-04 09:12:49

标签: c# winforms

我有以下问题:

在我的应用程序中双击网格会导致打开包含详细数据视图的新表单。

这个新窗口应该在应用程序的顶部打开并进行聚焦,但它不是主窗口的子窗口。

问题是,这有时只能起作用。

即。新窗口打开两次作为顶部窗口,第三次只闪烁,主应用程序保持在顶部(焦点在新打开的窗口中。)

以下是我的代码片段:

 private void gridHistoryView_DoubleClick(object sender, EventArgs e)
        {
            GridView view = (GridView)sender;
            Point pt = view.GridControl.PointToClient(Control.MousePosition);
            DoRowDoubleClick(view, pt);
        }



private  void DoRowDoubleClick(GridView view, Point pt)
        {
            // some conditions to close the proccess

                LoadDetail(docType, docID);

            }
        }

private void LoadDetail(string docType, string docID)
        {
            Form frmHistoryDetail = new Form();
            frmHistoryDetail.TopLevel = true;
            frmHistoryDetail.TopMost = true;

            //retrieve data from database etc.


            frmHistoryDetail.WindowState = FormWindowState.Maximized;


            frmHistoryDetail.Show();
}

2 个答案:

答案 0 :(得分:0)

您应该设置对话框的父级,而不是设置TopLevel和TopMost。这应该足以确保它显示在您想要的窗口上方。

frmHistoryDetail.Show(this);

MSDN Link for Show(IWin32Window owner)

答案 1 :(得分:0)

如何将新表单的所有者设置为主表单? 这仍然允许您在新表单可见时访问主表单。 然后,新表单将位于主表单的顶部,但不会在其他应用程序之上, 这通常是理想的行为。

Form frmHistoryDetail = new Form();
frmHistoryDetail.Owner = this;

//retrieve data from database etc.

frmHistoryDetail.WindowState = FormWindowState.Maximized;

frmHistoryDetail.Show();