我正在尝试制作一个操作系统。我需要它在 5 秒后切换表单,以便它可以从启动屏幕 (Form1) 转到包含所有应用程序的屏幕 (Form2)。这是我的代码。它是用 C# 编写的。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Byte_OS_1._0_Interface_Test_5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
await Task.Delay(5000);
this.Hide();
Form2 home = new Form2();
home.Show();
}
}
}
我尝试这样做,但没有成功:
static async void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
await Task.Delay(5000);
Application.Run(new Form2());
}
我不知道以这种方式结束一个线程并开始另一个线程是否是一个好习惯,但这种方法确实可以满足您的要求。 假设您在项目中创建了文件“Form1.cs”和“Form2.cs”。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Show();
Task task = Task.Delay(5000);
task.Wait();
Application.ExitThread();
Application.Run(new Form2());
}
}
}
program.cs 文件未被触及。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
internal static class Program
{
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}