如何在c#中将Windows窗体带到前面?

时间:2016-07-23 15:42:11

标签: c# .net windows c#-4.0

在我的应用程序中,当用户点击标签打开表单时,表单会在后台打开。我的意思是它不会出现在前面,而是放在任务栏上。一旦用户取消该表单实例并再次单击标签,表单就会在前台打开。以下部分代码执行特定的工作。

        if (DataFormDlg.Instance.InvokeRequired)
        {
            DataFormDlg.Instance.BeginInvoke(
                new ShowDataFormDelegate(ShowDataForm), pageId, timeout);
            return;
        }

        DataFormDlg.Instance.CurrentPageId = pageId;
        DataFormDlg.Instance.Timeout = timeout;

        if (!DataFormDlg.Instance.Visible)
            DataFormDlg.Instance.ShowDialog();
        else
            DataFormDlg.Instance.Focus();

这里的DataFormDlg是从windows窗体派生的。

1 个答案:

答案 0 :(得分:1)

将当前表单作为所有者传递给ShowDialog方法。即使用户点击第一个表单,对话框表格也永远不会落后于第一个表单。

另一个结果是,当所有者表单关闭时,第二个表单会自动关闭。当使用Show而不是ShowDialog打开第二个表单时,此功能特别有用。

DataFormDlg.Instance.ShowDialog(this);

使用此重载版本:

public DialogResult ShowDialog(IWin32Window owner)