XtraMessageBox
DevExpress消息框(XtraMessageBox)是一个完全可定制的控件,扩展了标准Windows表单消息框的功能。它的高级功能包括:DevExpress皮肤,HTML启发的文本格式,以及HTML和CSS模板。
显示消息框
调用静态(在VB中共享)XtraMessageBox.Show方法来显示XtraMessageBox,方法重载允许您指定标题、文本、按钮、图标和其他外观设置。下面的代码示例防止在用户单击No时关闭应用程序。
下面的示例演示如何显示应用程序退出确认消息:
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Displays a message box prompting the user to confirm whether they wish to exit the application. if(XtraMessageBox.Show("Do you want to quit the application?", "Confirmation", MessageBoxButtons.YesNo) == DialogResult.No) { e.Cancel = true; } }
VB.NET:
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) ' Displays a message box prompting the user to confirm whether they wish to exit the application. If XtraMessageBox.Show("Do you want to quit the application?", "Confirmation", MessageBoxButtons.YesNo) = DialogResult.No Then e.Cancel = True End If End Sub
提示:您可以使用XtraDialog类让更复杂的布局显示消息。
自动关闭消息框
使用XtraMessageBox.Show(XtraMessageBoxArgs)方法显示自动关闭消息框,这个方法接受一个带有消息框设置作为参数的XtraMessageBoxArgs对象。
使用AutoCloseOptions.Delay属性来设置自动关闭超时(以毫秒为单位)。启用AutoCloseOptions.ShowTimerOnDefaultButton选项来显示默认对话框按钮上的倒计时,要选择默认按钮,请使用DefaultButtonIndex属性。
下面的示例演示了如何启用自动关闭选项:
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Creates and initializes an object with message box settings. XtraMessageBoxArgs args = new XtraMessageBoxArgs() { // Sets the caption of the message box. Caption = "Confirmation", // Sets the message of the message box. Text = "Do you want to close the application?", // Sets the buttons of the message box. Buttons = new DialogResult[] { DialogResult.Yes, DialogResult.No }, // Sets the auto-close options of the message box. AutoCloseOptions = new AutoCloseOptions() { // Sets the delay before the message box automatically closes. Delay = 5000, // Displays the timer on the default button. ShowTimerOnDefaultButton = true } }; // Displays the message box and checks if a user clicked "No". if(XtraMessageBox.Show(args) == DialogResult.No) e.Cancel = true; }
VB.NET:
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) ' Creates and initializes an object with message box settings. Dim args As XtraMessageBoxArgs = New XtraMessageBoxArgs() With { ' Sets the caption of the message box. .Caption = "Confirmation", ' Sets the message of the message box. .Text = "Do you want to close the application?", ' Sets the buttons of the message box. .Buttons = New DialogResult() {DialogResult.Yes, DialogResult.No}, ' Sets the auto-close options of the message box. .AutoCloseOptions = New AutoCloseOptions() With { ' Sets the delay before the message box automatically closes. .Delay = 5000, ' Displays the timer on the default button. .ShowTimerOnDefaultButton = True } } ' Displays the message box and checks if a user clicked "No". If XtraMessageBox.Show(args) Is DialogResult.No Then e.Cancel = True End Sub
下面的屏幕截图说明了结果:
屏蔽消息框
启用XtraMessageBoxArgs.DoNotShowAgainCheckBoxVisible属性,在消息框中显示Do not show this message again复选框。
下面的代码示例演示了如何在XtraMessageBox消息框中使用 Do not show this message again复选框。
C#:
private void Form1_Load(object sender, EventArgs e) { // Creates a new XtraMessageBoxArgs instance. XtraMessageBoxArgs args = new XtraMessageBoxArgs() { // Sets the caption of the message box. Caption = "This is a trial version", // Sets the message text to display in the message box. Text = "You are using a trial version. The trial period expires in 30 days.", // Sets buttons to display in the message box. Buttons = new DialogResult[] { DialogResult.OK }, // Enables the "Do not show this message again" check box in the message box. DoNotShowAgainCheckBoxVisible = true, // Aligns the button(s) to the far right of the message box. ButtonAlignment = DevExpress.Utils.HorzAlignment.Far, }; // Attaches event handlers for when the message box is loaded and closed. args.Load += Args_Load; args.Closed += Args_Closed; XtraMessageBox.Show(args); } // This method is called when the message box is closed. private void Args_Closed(object sender, XtraMessageBoxClosedArgs e) { // Saves the message box settings to the registry. e.SaveToRegistry(); } // This method is called when the message box is loaded. private void Args_Load(object sender, XtraMessageBoxLoadArgs e) { // Restores the message box settings from the registry. e.RestoreFromRegistry(); }
VB.NET:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Creates a new XtraMessageBoxArgs instance. Dim args As New XtraMessageBoxArgs() With { ' Sets the caption of the message box. .Caption = "This is a trial version", ' Sets the message text to display in the message box. .Text = "You are using a trial version. The trial period expires in 30 days.", ' Sets the button(s) to display in the message box. .Buttons = {DialogResult.OK}, ' Enables the "Do not show this message again" check box in the message box. .DoNotShowAgainCheckBoxVisible = True, ' Aligns the button(s) to the far right of the message box. .ButtonAlignment = DevExpress.Utils.HorzAlignment.Far } ' Attaches event handlers for when the message box is loaded and closed. AddHandler args.Load, AddressOf Args_Load AddHandler args.Closed, AddressOf Args_Closed XtraMessageBox.Show(args) End Sub ' This method is called when the message box is closed. Private Sub Args_Closed(sender As Object, e As XtraMessageBoxClosedArgs) ' Saves the message box settings to the registry. e.SaveToRegistry() End Sub ' This method is called when the message box is loaded. Private Sub Args_Load(sender As Object, e As XtraMessageBoxLoadArgs) ' Restores the message box settings from the registry. e.RestoreFromRegistry() End Sub
XtraMessageBoxArgs对象在消息显示或关闭时触发Load和Closed事件。处理这些事件来保存和恢复XtraMessageBoxEventArgs.Visible属性,该属性返回用户是否选中了该复选框。
使用SaveToRegistry()和RestoreFromRegistry()方法将Visible属性的值保存并加载到(或从)注册表中,您可以将此值存储在本地变量、本地存储文件或数据库中。
使用XtraMessageBoxLoadArgs.ShowMessage()方法和XtraMessageBoxArgs.Load事件强制显示消息,即使用户选择永远不会再看到它。
更改消息框图标
使用XtraMessageBoxArgs.Icon属性在消息框中显示自定义图标。
下面的示例演示如何在消息框中显示图标,在本例中,图标是从本地存储加载的。
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Creates and initializes an object with message box settings. XtraMessageBoxArgs args = new XtraMessageBoxArgs() { // Sets the caption of the message box. Caption = "Confirmation", // Sets the message of the message box. Text = "Do you want to close the application?", // Sets the buttons of the message box. Buttons = new DialogResult[] { DialogResult.Yes, DialogResult.No }, // Sets the icon of the message box. Icon = new Icon(@"C:\img\warning-16.ico"), // Sets the auto-close options of the message box. AutoCloseOptions = new AutoCloseOptions() { // Sets the delay before the message box automatically closes. Delay = 5000, // Displays the timer on the default button. ShowTimerOnDefaultButton = true } }; // Displays the message box and checks if a user clicked "No". if(XtraMessageBox.Show(args) == DialogResult.No) e.Cancel = true; }
VB.NET:
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) ' Creates and initializes an object with message box settings. Dim args As XtraMessageBoxArgs = New XtraMessageBoxArgs() With { ' Sets the caption of the message box. .Caption = "Confirmation", ' Sets the message of the message box. .Text = "Do you want to close the application?", ' Sets the buttons of the message box. .Buttons = New DialogResult() {DialogResult.Yes, DialogResult.No}, ' Sets the icon of the message box. .Icon = New Icon("C:\img\warning-16.ico"), ' Sets the auto-close options of the message box. .AutoCloseOptions = New AutoCloseOptions() With { ' Sets the delay before the message box automatically closes. .Delay = 5000, ' Displays the timer on the default button. .ShowTimerOnDefaultButton = True } } ' Displays the message box and checks if a user clicked "No". If XtraMessageBox.Show(args) Is DialogResult.No Then e.Cancel = True End Sub
下面的示例在消息框中显示来自SvgImageCollection的SVG图像:
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Creates and initializes an object with message box settings. XtraMessageBoxArgs args = new XtraMessageBoxArgs() { // Sets the caption of the message box. Caption = "Warning", // Sets the message of the message box. Text = "Do you want to install this software?", // Sets the buttons of the message box. Buttons = new DialogResult[] { DialogResult.Yes, DialogResult.No }, // Sets the icon of the message box from the collection. ImageOptions = new MessageBoxImageOptions() { SvgImage = svgImageCollection1[0], SvgImageSize = new Size(24, 24) } }; // Displays the message box and checks if a user clicked "No". if(XtraMessageBox.Show(args) == DialogResult.Yes) { e.Cancel = true; } }
VB.NET:
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing ' Creates and initializes an object with message box settings. Dim args As New XtraMessageBoxArgs() With { ' Sets the caption of the message box. .Caption = "Warning", ' Sets the message of the message box. .Text = "Do you want to install this software?", ' Sets the buttons of the message box. .Buttons = {DialogResult.Yes, DialogResult.No}, ' Sets the icon of the message box from the collection. .ImageOptions = New MessageBoxImageOptions() With { .SvgImage = svgImageCollection1(0), .SvgImageSize = New Size(24, 24) } } ' Displays the message box and checks if a user clicked "No". If XtraMessageBox.Show(args) = DialogResult.Yes Then e.Cancel = True End If End Sub
自定义消息框按钮
下面的例子处理显示事件并在消息框按钮中显示SVG图标:
C#:
// Initializes an XtraMessageBoxArgs object to hold message box arguments. XtraMessageBoxArgs args = new XtraMessageBoxArgs(); // Sets the message box caption. args.Caption = "Message"; // Sets the message box text. args.Text = "Buttons in this message box show custom images."; // Sets message box buttons. args.Buttons = new DialogResult[] { DialogResult.OK, DialogResult.Cancel, DialogResult.Retry}; // Attaches an event handler to message box showing event. args.Showing += Args_Showing; // Shows the message box with the specified arguments. XtraMessageBox.Show(args); // The event handler for the message box Showing event. private void Args_Showing(object sender, XtraMessageShowingArgs e) { // Loops through all controls in the message box. foreach (var control in e.MessageBoxForm.Controls) { // Checks if a control is a SimpleButton. SimpleButton button = control as SimpleButton; if (button != null) { // Sets the size of the button image to 16x16. button.ImageOptions.SvgImageSize = new Size(16, 16); // Sets a custom image for each button. switch (button.DialogResult.ToString()) { case ("OK"): button.ImageOptions.SvgImage = svgImageCollection1[0]; break; case ("Cancel"): button.ImageOptions.SvgImage = svgImageCollection1[1]; break; case ("Retry"): button.ImageOptions.SvgImage = svgImageCollection1[2]; break; } } } }
VB.NET:
' Initializes an XtraMessageBoxArgs object to hold message box arguments. Dim args As XtraMessageBoxArgs = New XtraMessageBoxArgs ' Sets the message box caption. args.Caption = "Message" ' Sets the message box text. args.Text = "Buttons in this message box show custom images." ' Sets message box buttons. args.Buttons = New DialogResult() {DialogResult.OK, DialogResult.Cancel, DialogResult.Retry} ' Attaches an event handler to the message box Showing event. args.Showing = (args.Showing + Args_Showing) ' Shows the message box with the specified arguments. XtraMessageBox.Show(args) ' The event handler for the message box Showing event. Private Sub Args_Showing(ByVal sender As Object, ByVal e As XtraMessageShowingArgs) ' Loops through all controls in the message box. For Each control In e.MessageBoxForm.Controls ' Checks if a control is a SimpleButton. Dim button As SimpleButton = CType(control,SimpleButton) If (Not (button) Is Nothing) Then ' Sets the size of the button image to 16x16. button.ImageOptions.SvgImageSize = New Size(16, 16) ' Sets a custom image for each button. Select Case (button.DialogResult.ToString) Case "OK" button.ImageOptions.SvgImage = svgImageCollection1(0) Case "Cancel" button.ImageOptions.SvgImage = svgImageCollection1(1) Case "Retry" button.ImageOptions.SvgImage = svgImageCollection1(2) End Select End If Next End Sub
自定义外观和字体设置
下面的代码示例演示了如何增加消息框按钮的高度和更改字体设置。
C#:
// Creates a new instance of XtraMessageBoxArgs. XtraMessageBoxArgs args = new XtraMessageBoxArgs(); // Sets the caption for the message box. args.Caption = "Message"; // Sets the text for the message box. args.Text = "This message has custom font settings."; // Sets the buttons for the message box. args.Buttons = new DialogResult[] { DialogResult.OK}; // Subscribes to the Showing event of the message box. args.Showing += Args_Showing; // Shows the message box and converts the result to a string. XtraMessageBox.Show(args).ToString(); // The event handler for the Showing event of the message box. private void Args_Showing(object sender, XtraMessageShowingArgs e) { // Makes the message box caption bold. e.Form.Appearance.FontStyleDelta = FontStyle.Bold; // Increases the font size and height of the OK button. MessageButtonCollection buttons = e.Buttons as MessageButtonCollection; SimpleButton btn = buttons[System.Windows.Forms.DialogResult.OK] as SimpleButton; if (btn != null) { btn.Appearance.FontSizeDelta = 15; btn.Height += 10; } }
VB.NET:
' Creates a new instance of XtraMessageBoxArgs. Dim args As New XtraMessageBoxArgs() ' Sets the caption for the message box. args.Caption = "Message" ' Sets the text for the message box. args.Text = "This message has custom font settings." ' Sets the buttons for the message box. args.Buttons = New DialogResult() {DialogResult.OK} ' Subscribes to the Showing event of the message box. AddHandler args.Showing, AddressOf Args_Showing ' Shows the message box and converts the result to a string. XtraMessageBox.Show(args).ToString() ' The event handler for the message box Showing event. Private Sub Args_Showing(ByVal sender As Object, ByVal e As XtraMessageShowingArgs) ' Makes the message box caption bold. e.Form.Appearance.FontStyleDelta = FontStyle.Bold ' Increases the font size and height of the OK button. Dim buttons As MessageButtonCollection = TryCast(e.Buttons, MessageButtonCollection) Dim btn As SimpleButton = TryCast(buttons(System.Windows.Forms.DialogResult.OK), SimpleButton) If btn IsNot Nothing Then btn.Appearance.FontSizeDelta = 15 btn.Height += 10 End If End Sub
XtraMessageBox支持HTML启发的文本格式,下面的代码示例演示了如何使用HTML标记来格式化消息框的内容:
C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Creates a new instance of the XtraMessageBoxArgs class. XtraMessageBoxArgs args = new XtraMessageBoxArgs(); // Sets AllowHtmlText to true to allow HTML formatting in the message box text. args.AllowHtmlText = DefaultBoolean.True; // Sets the size of the image displayed in the message box. svgImageCollection1.ImageSize = new Size(24, 24); // Sets the SVG images to be displayed in the message box. args.HtmlImages = svgImageCollection1; // Sets the caption of the message box. args.Caption = "Error"; // Sets the message to be displayed in the message box. args.Text = "<p align = center><image=actions_deletecircled><br><br>" + "<b>Error</b><br>" + "Oops, something went wrong.<br>" + "Please try again later.</p>"; // Sets the buttons to be displayed in the message box. args.Buttons = new DialogResult[] { DialogResult.Retry, DialogResult.Cancel }; // Displays the message box with the specified arguments. XtraMessageBox.Show(args); }
VB.NET:
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) ' Creates a new instance of the XtraMessageBoxArgs class. Dim args As New XtraMessageBoxArgs() ' Sets AllowHtmlText to true to allow HTML formatting in the message box text. args.AllowHtmlText = DefaultBoolean.True ' Sets the size of the image displayed in the message box. svgImageCollection1.ImageSize = New Size(24, 24) ' Sets the SVG images to be displayed in the message box. args.HtmlImages = svgImageCollection1 ' Sets the caption of the message box. args.Caption = "Error" ' Sets the message to be displayed in the message box. args.Text = "<p align = center><image=actions_deletecircled><br><br>" & _ "<b>Error</b><br>" & _ "Oops, something went wrong.<br>" & _ "Please try again later.</p>" ' Sets the buttons to be displayed in the message box. args.Buttons = New DialogResult() {DialogResult.Retry, DialogResult.Cancel} ' Displays the message box with the specified arguments. XtraMessageBox.Show(args) End Sub
更改按钮对齐方式
使用XtraMessage.BoxButtonsAlignment static(在VB中共享)属性来指定按钮对齐方式。
下面的代码示例演示了如何将消息框按钮向右对齐。
C#:
XtraMessageBox.ButtonsAlignment = HorizontalAlignment.Right;
VB.NET:
XtraMessageBox.ButtonsAlignment = HorizontalAlignment.Right