DevExpress WinForms帮助文档:表单控件 - 动态更新添加到初始表单的自定义控件
DevExpress技术交流群3:700924826 欢迎一起进群讨论
在此示例中,自定义进度栏控件被添加到启动屏幕。 该示例显示如何通过从启动画面管理器发送命令来动态更新此进度栏控件。启动画面由启动画面管理器在单独的线程中显示,可以通过命令机制执行与启动画面的交互。 您通过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 Overrides public 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; } } #endregion public 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 Screen SplashScreenManager.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.VisualBasic Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Linq Imports System.Text Imports System.Windows.Forms Imports DevExpress.XtraSplashScreen Imports System.Threading Namespace SplashScreen_ProcessCommand Partial Public Class Form1 Inherits Form Public Sub New() InitializeComponent() End Sub Private Sub btnShowSplashScreen_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnShowSplashScreen.Click ' Open a Splash Screen SplashScreenManager.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 100 SplashScreenManager.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 Sub End Class End Namespace
SplashScreen1.vb
Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Text Imports System.Windows.Forms Imports DevExpress.XtraSplashScreen Namespace SplashScreen_ProcessCommand Partial Public Class SplashScreen1 Inherits SplashScreen Public 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 Then Dim pos As Integer = CInt(Fix(arg)) progressBarControl1.Position = pos End If End Sub #End Region Public Enum SplashScreenCommand SetProgress Command2 Command3 End Enum End Class End Namespace
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2018-02-26 DevExpress v17.2新版亮点—Bootstrap篇(一)