当父级没有焦点时,CenterParent无法工作

时间:2014-03-12 21:44:49

标签: c# winforms

我有一个带有计时器的表单。计时器加载一个对话框,显示表单正忙。当主窗体没有焦点时,繁忙的窗体将加载到电脑屏幕的左上角(这是不期望的)。当表单具有焦点时,它按预期工作。如果将ShowInTaskbar设置为true,那么即使主窗体没有焦点,它也会按预期工作。这里发生了什么,我该如何解决?

C#代码

namespace CenterParentIssue
{

    public partial class Main : Form
    {
        WaitingForm formWindowsWaitingForm;
        public Main()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            formWindowsWaitingForm = new WaitingForm();
            formWindowsWaitingForm.StartPosition = FormStartPosition.CenterParent;
            formWindowsWaitingForm.ShowInTaskbar = false;
            formWindowsWaitingForm.ShowDialog();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您需要为WaitingForm提供父语境。 ShowDialog()有一个重载,它以Window作为参数,这个窗口是父/所有者。

//...
formWindowsWaitingForm.ShowDialog(this);
//...