形式不对

时间:2014-08-04 03:38:09

标签: c# winforms topmost form-control

我想在特定时间显示表单类的实例。形式需要是最重要的,而不是偷东西。这是我的代码:

public class mSplashForm : Form
{
    public mSplashForm()
    {
        this.FormBorderStyle = FormBorderStyle.None;
        this.BackColor = Color.LightBlue;
        this.Opacity = 0.92D;
        this.ShowInTaskbar = false;
        this.MinimumSize = new System.Drawing.Size(5, 5);
    }
}


public static void mSplash(int time = 500)
{
    mSplashForm SF = new mSplashForm();
    Application.EnableVisualStyles();
    SF.Width = 500;
    SF.Height = 100;
    SF.Left = 500;
    SF.Top = 500;
    SetWindowPos(SF.Handle, HWND_TOPMOST, SF.Left, SF.Top, SF.Width, SF.Height, SWP_NOACTIVATE);
    ShowWindow(SF.Handle, mEnumShowWindowCommands.ShowNoActivate);
    Application.DoEvents();
    Thread.Sleep(time);
    SF.Close();
}

它可以工作,但表单没有显示在使用Top和Left参数定义的正确位置。有什么不对吗?

3 个答案:

答案 0 :(得分:2)

您已将表单设置为从FormStartPosition.WindowsDefaultLocation开始。将其添加到mSplash函数中:

SF.StartPosition = FormStartPosition.Manual;

这就是为什么它会尝试在每个开口处连续按页面排列(根据你的评论)。

答案 1 :(得分:1)

将开始位置设置为手动:

this.StartPosition = FormStartPosition.Manual;

答案 2 :(得分:1)

试试这个

SF.StartPosition = FormStartPosition.Manual;
SF.Width = 500;
SF.Height = 100;
SF.Left = 500;
SF.Top = 500;