我使用c# 编程,有一大段代码需要执行,我想在这段代码执行的时候弹出loading窗体,代码运行结束后关闭窗体,怎么做?
时间: 2024-10-27 08:04:08 浏览: 9
在C#中,你可以通过创建一个异步任务并在其中处理加载过程,并利用Windows Forms的`Form`或WPF的`Popup`来展示一个加载窗体。这里是一个基本的示例:
**Windows Forms (WinForms) 示例:**
```csharp
// 定义一个用于显示加载的Form
public partial class LoadingForm : Form
{
public LoadingForm()
{
InitializeComponent();
this.ShowInTaskbar = false; // 如果需要,可以隐藏任务栏图标
this.FormBorderStyle = FormBorderStyle.FixedDialog; // 选择合适的边界样式
}
}
public async Task ExecuteLongTask()
{
// 创建并显示加载窗体
var loadingForm = new LoadingForm();
loadingForm.Show();
// 执行你的长任务
await PerformLongTask();
// 当任务完成后,关闭加载窗体
loadingForm.Close();
}
private async Task PerformLongTask()
{
// 替换为你实际的长时间运行代码
await Task.Delay(2000); // 模拟耗时操作
Console.WriteLine("任务完成");
}
```
**WPF 示例:**
```csharp
// 定义一个用于显示加载的Popup
private Popup _popup;
public MainWindow()
{
InitializeComponent();
PerformLongTask();
}
private async Task PerformLongTask()
{
// 显示加载提示
if (_popup == null)
{
_popup = new Popup();
Grid loadingGrid = new Grid();
loadingGrid.Children.Add(new ProgressBar() { IsIndeterminate = true });
loadingGrid.Children.Add(new TextBlock { Text = "加载中..." });
_popup.Child = loadingGrid;
_popup.IsOpen = true;
}
// 开始执行长任务
await Task.Delay(2000); // 模拟耗时操作
// 关闭加载提示
_popup.IsOpen = false;
}
```
在上述代码中,`ExecuteLongTask()`或`PerformLongTask()`函数包含了你的长代码块。当代码执行时,会先打开加载窗体,然后等待任务完成后再关闭它。记得替换`Delay`部分为实际的长期操作。
阅读全文