在此示例中,自定义进度栏控件被添加到启动屏幕。 该示例显示如何通过从启动画面管理器发送命令来动态更新此进度栏控件。启动画面由启动画面管理器在单独的线程中显示,可以通过命令机制执行与启动画面的交互。 您通过SplashScreenManager.SendCommand方法发送命令,并通过覆盖SplashScreen.ProcessCommand方法来处理此命令。 在该示例中,自定义命令被发送到启动画面,以推进启动画面的进度条控件的进度。
注意:完整的示例项目位于https://github.com/DevExpress-Examples/how-to-interact-with-a-splash-screen-by-sending-commands-e3576。
SplashScreen1.cs
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using DevExpress.XtraSplashScreen;namespace SplashScreen_ProcessCommand {public partial class SplashScreen1 : SplashScreen {public SplashScreen1() {InitializeComponent();}#region Overridespublic override void ProcessCommand(Enum cmd, object arg) {base.ProcessCommand(cmd, arg);SplashScreenCommand command = (SplashScreenCommand)cmd;if (command == SplashScreenCommand.SetProgress) {int pos = (int)arg;progressBarControl1.Position = pos;}}#endregionpublic enum SplashScreenCommand {SetProgress,Command2,Command3}}}
Form1.cs
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using DevExpress.XtraSplashScreen;using System.Threading;namespace SplashScreen_ProcessCommand {public partial class Form1 : Form {public Form1() {InitializeComponent();}private void btnShowSplashScreen_Click(object sender, EventArgs e) {// Open a Splash ScreenSplashScreenManager.ShowForm(this, typeof(SplashScreen1), true, true, false);// The splash screen will be opened in a separate thread. To interact with it, use the SendCommand method.for (int i = 1; i <= 100; i++) {SplashScreenManager.Default.SendCommand(SplashScreen1.SplashScreenCommand.SetProgress, i);//To process commands, override the SplashScreen.ProcessCommand method.Thread.Sleep(25);}// Close the Splash Screen.SplashScreenManager.CloseForm(false);}}}
Form1.vb
Imports Microsoft.VisualBasicImports SystemImports System.Collections.GenericImports System.ComponentModelImports System.DataImports System.DrawingImports System.LinqImports System.TextImports System.Windows.FormsImports DevExpress.XtraSplashScreenImports System.ThreadingNamespace SplashScreen_ProcessCommandPartial Public Class Form1Inherits FormPublic Sub New()InitializeComponent()End SubPrivate Sub btnShowSplashScreen_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnShowSplashScreen.Click' Open a Splash ScreenSplashScreenManager.ShowForm(Me, GetType(SplashScreen1), True, True, False)' The splash screen will be opened in a separate thread. To interact with it, use the SendCommand method.For i As Integer = 1 To 100SplashScreenManager.Default.SendCommand(SplashScreen1.SplashScreenCommand.SetProgress, i)'To process commands, override the SplashScreen.ProcessCommand method.Thread.Sleep(25)Next i' Close the Splash Screen.SplashScreenManager.CloseForm(False)End SubEnd ClassEnd Namespace
SplashScreen1.vb
Imports Microsoft.VisualBasicImports SystemImports System.Collections.GenericImports System.ComponentModelImports System.DataImports System.DrawingImports System.TextImports System.Windows.FormsImports DevExpress.XtraSplashScreenNamespace SplashScreen_ProcessCommandPartial Public Class SplashScreen1Inherits SplashScreenPublic Sub New()InitializeComponent()End Sub#Region "Overrides"Public Overrides Sub ProcessCommand(ByVal cmd As System.Enum, ByVal arg As Object)MyBase.ProcessCommand(cmd, arg)Dim command As SplashScreenCommand = CType(cmd, SplashScreenCommand)If command = SplashScreenCommand.SetProgress ThenDim pos As Integer = CInt(Fix(arg))progressBarControl1.Position = posEnd IfEnd Sub#End RegionPublic Enum SplashScreenCommandSetProgressCommand2Command3End EnumEnd ClassEnd Namespace
DevExpress技术交流群3:700924826 欢迎一起进群讨论

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!