1

特定の時間のフォーム クラスのインスタンスを表示したいと思います。フォームは一番上にある必要があり、フォーカスを奪わないでください。これが私のコードです:

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 パラメータを使用して定義された正しい位置にフォームが表示されません。何が間違っていますか?

4

3 に答える 3

2

フォームを開始するように設定しましたFormStartPosition.WindowsDefaultLocationmSplashこれを関数に追加します。

SF.StartPosition = FormStartPosition.Manual;

これが、各オープニングで(コメントに従って)ページを連続して下に配置しようとしている理由です。

于 2014-08-04T03:53:24.540 に答える
1

開始位置を手動に設定します。

this.StartPosition = FormStartPosition.Manual;
于 2014-08-04T03:53:01.250 に答える
1

これを試して

SF.StartPosition = FormStartPosition.Manual;
SF.Width = 500;
SF.Height = 100;
SF.Left = 500;
SF.Top = 500;
于 2014-08-04T03:53:24.950 に答える