栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596963.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号