我有以下问题:
在我的应用程序中双击网格会导致打开包含详细数据视图的新表单。
这个新窗口应该在应用程序的顶部打开并进行聚焦,但它不是主窗口的子窗口。
问题是,这有时只能起作用。
即。新窗口打开两次作为顶部窗口,第三次只闪烁,主应用程序保持在顶部(焦点在新打开的窗口中。)
以下是我的代码片段:
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();
}
答案 0 :(得分:0)
您应该设置对话框的父级,而不是设置TopLevel和TopMost。这应该足以确保它显示在您想要的窗口上方。
frmHistoryDetail.Show(this);
答案 1 :(得分:0)
如何将新表单的所有者设置为主表单? 这仍然允许您在新表单可见时访问主表单。 然后,新表单将位于主表单的顶部,但不会在其他应用程序之上, 这通常是理想的行为。
Form frmHistoryDetail = new Form();
frmHistoryDetail.Owner = this;
//retrieve data from database etc.
frmHistoryDetail.WindowState = FormWindowState.Maximized;
frmHistoryDetail.Show();