Заставка не скрывается - с помощью библиотеки Microsoft.VisualBasic - PullRequest
2 голосов
/ 15 июля 2010

У меня есть 2 формы.Form1 (с кодом ниже) и Splash (просто форма по умолчанию для теста).

Моя проблема в том, что после запуска приложения Splash не скрывается.Основная форма загружена, но Splash все еще не закрыт.

Код Form1 :

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;

namespace WindowsFormsApplication2
{
    class Program : WindowsFormsApplicationBase 
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());

            // Show Form in Single-instance mode
            var prg = new Program();
            prg.EnableVisualStyles = true;
            prg.IsSingleInstance = true;
            prg.MinimumSplashScreenDisplayTime = 1000;
            prg.SplashScreen = new Splash();
            prg.MainForm = new Form1();
            prg.Run(args);
        }
    }
}

Для работы этого необходимо добавить ссылку на Microsoft.VisualBasic.

Всплеск Код формы:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Splash : Form
    {
        public Splash()
        {
            InitializeComponent();
        }
    }
}

Заранее благодарим за помощь.

1 Ответ

3 голосов
/ 15 июля 2010

Ах, вы используете Visual Basic Appplication Framework для запуска заставки? Попробуй это. Это из быстрого приложения Forms - обратите внимание, что я оставил все имена и пространство имен по умолчанию, поэтому вам может потребоваться изменить это для своего кода. Проект имеет только две формы. Form2 это заставка. Я вставил на него фоновое изображение, чтобы оно нормально отображалось и могло отличить его от Form1.

Я добавил ссылку на .NET Microsoft.VisualBasic в свой проект.

Это из файла program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;

namespace WindowsFormsApplication1
{
    static class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            new MyApp().Run(args);
        }
    }
    public class MyApp : WindowsFormsApplicationBase
    {
        protected override void OnCreateSplashScreen()
        {
            this.SplashScreen = new Form2();
        }
        protected override void OnCreateMainForm()
        {
            // Do your initialization here
            //...
            System.Threading.Thread.Sleep(5000);  // Test
            // Then create the main form, the splash screen will automatically close
            this.MainForm = new Form1();
        }
    }
}

Я знаю, что это отличается от того, что вы используете, но, похоже, работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...