Windows窗体初始屏幕-加载主窗体时显示窗体

Windows窗体初始屏幕-加载主窗体时显示窗体,第1张

Windows窗体初始屏幕-加载主窗体时显示窗体

有多种创建初始屏幕的方法:

  • 您可以依靠的启动画面功能

    WindowsFormsApplicationbase

  • 您可以通过在其他UI线程上显示表单并将表单成功加载到主窗口后隐藏起来,来亲自展示实现该功能。

在这篇文章中,我将展示两种解决方案的示例。

注意:那些正在寻找在数据加载期间显示加载窗口或gif动画的人,可以看看这篇文章:在其他线程中加载数据期间显示加载动画

选项1-使用WindowsFormsApplicationbase启动画面功能

  1. 添加
    Microsoft.VisualBasic.dll
    对您的项目的引用。
  2. MyApplication
    通过派生来创建一个类
    WindowsFormsApplicationbase
  3. 覆盖
    OnCreateMainForm
    并将您要用作启动表单的表单分配给
    MainForm
    属性。
  4. 覆盖

    OnCreateSplashScreen
    并将要显示为初始屏幕的表单分配给
    SplashScreen
    属性。

  5. 在您的

    Main
    方法中,创建的实例
    MyApplication
    并调用其
    Run
    方法。

using System;using System.Windows.Forms;using Microsoft.VisualBasic.ApplicationServices;static class Program{    /// <summary>    /// The main entry point for the application.    /// </summary>    [STAThread]    static void Main()    {        Application.EnableVisualStyles();        Application.SetCompatibleTextRenderingDefault(true);        var app = new MyApplication();        app.Run(Environment.GetCommandLineArgs());    }}public class MyApplication : WindowsFormsApplicationbase{    protected override void onCreateMainForm()    {        MainForm = new YourMainForm();    }    protected override void onCreateSplashScreen()    {        SplashScreen = new YourSplashForm();    }}

选项2-使用其他UI线程实施功能

您可以通过在其他UI线程中显示初始屏幕来自己实现此功能。为此,您可以

Load
Program
课堂上订阅主窗体的事件,并在那里显示和关闭初始屏幕。

using System;using System.Threading;using System.Windows.Forms;static class Program{    static Form SplashScreen;    static Form MainForm;    [STAThread]    static void Main()    {        Application.EnableVisualStyles();        Application.SetCompatibleTextRenderingDefault(false);        //Show Splash Form        SplashScreen = new Form();        var splashThread = new Thread(new ThreadStart( () => Application.Run(SplashScreen)));        splashThread.SetApartmentState(ApartmentState.STA);        splashThread.Start();        //Create and Show Main Form        MainForm = new Form8();        MainForm.Load += MainForm_LoadCompleted;        Application.Run(MainForm);    }    private static void MainForm_LoadCompleted(object sender, EventArgs e)    {        if (SplashScreen != null && !SplashScreen.Disposing && !SplashScreen.IsDisposed) SplashScreen.Invoke(new Action(() => SplashScreen.Close()));        MainForm.TopMost = true;        MainForm.Activate();        MainForm.TopMost = false;    }}

注意:要显示平滑的边缘自定义形状的初始屏幕,请查看以下文章:Windows Forms Transparent Background
Image



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5602299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存