Я хочу использовать пользовательский значок в методе MessageBox.Show("Message", "Title", MessageBoxButton.OK, MeesageBoxIcon.myIcon)
.
Любое предложение пожалуйста?
Я хочу использовать пользовательский значок в методе MessageBox.Show("Message", "Title", MessageBoxButton.OK, MeesageBoxIcon.myIcon)
.
Любое предложение пожалуйста?
Я написал один недавно, он работает точно так же, как обычный класс сообщений.
CustomMessageBox (Class): http://pastebin.com/m8evBmZi
using System;
using System.Drawing;
using System.Windows.Forms;
public static class CustomMessageBox
{
public static DialogResult Show(string Text, string Title, eDialogButtons Buttons, Image Image)
{
MessageForm message = new MessageForm();
message.Text = Title;
if (Image.Height < 0 || Image.Height > 64)
throw new Exception("Invalid image height. Valid height ranges from 0 to 64.");
else if (Image.Width < 0 || Image.Width > 64)
throw new Exception("Invalid image width. Valid width ranges from 0 to 64.");
else
{
message.picImage.Image = Image;
message.lblText.Text = Text;
switch (Buttons)
{
case eDialogButtons.OK:
message.btnYes.Visible = false;
message.btnNo.Visible = false;
message.btnCancel.Visible = false;
message.btnOK.Location = message.btnCancel.Location;
break;
case eDialogButtons.OKCancel:
message.btnYes.Visible = false;
message.btnNo.Visible = false;
break;
case eDialogButtons.YesNo:
message.btnOK.Visible = false;
message.btnCancel.Visible = false;
message.btnYes.Location = message.btnOK.Location;
message.btnNo.Location = message.btnCancel.Location;
break;
case eDialogButtons.YesNoCancel:
message.btnOK.Visible = false;
break;
}
if (message.lblText.Height > 64)
message.Height = (message.lblText.Top + message.lblText.Height) + 78;
return (message.ShowDialog());
}
}
public enum eDialogButtons { OK, OKCancel, YesNo, YesNoCancel }
}
MessageForm (форма): http://pastebin.com/jawHZDzY
using System;
using System.Windows.Forms;
internal partial class MessageForm : Form
{
internal MessageForm() => InitializeComponent();
private void btnYes_Click(object sender, EventArgs e) =>
DialogResult = DialogResult.Yes;
private void btnNo_Click(object sender, EventArgs e) =>
DialogResult = DialogResult.No;
private void btnCancel_Click(object sender, EventArgs e) =>
DialogResult = DialogResult.Cancel;
private void btnOK_Click(object sender, EventArgs e) =>
DialogResult = DialogResult.OK;
}
MessageForm (код дизайнера): http://pastebin.com/CRXjeUFN
partial class MessageForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.picImage = new System.Windows.Forms.PictureBox();
this.lblText = new System.Windows.Forms.Label();
this.btnYes = new Dark.WinForms.Controls.dButton();
this.btnNo = new Dark.WinForms.Controls.dButton();
this.btnCancel = new Dark.WinForms.Controls.dButton();
this.btnOK = new Dark.WinForms.Controls.dButton();
((System.ComponentModel.ISupportInitialize)(this.picImage)).BeginInit();
this.SuspendLayout();
//
// picImage
//
this.picImage.ErrorImage = null;
this.picImage.InitialImage = null;
this.picImage.Location = new System.Drawing.Point(15, 15);
this.picImage.Name = "picImage";
this.picImage.Size = new System.Drawing.Size(64, 64);
this.picImage.TabIndex = 0;
this.picImage.TabStop = false;
//
// lblText
//
this.lblText.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lblText.AutoSize = true;
this.lblText.Location = new System.Drawing.Point(85, 15);
this.lblText.MaximumSize = new System.Drawing.Size(294, 0);
this.lblText.Name = "lblText";
this.lblText.Size = new System.Drawing.Size(28, 13);
this.lblText.TabIndex = 0;
this.lblText.Text = "Text";
//
// btnYes
//
this.btnYes.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnYes.FocusDuesEnabled = false;
this.btnYes.Location = new System.Drawing.Point(139, 88);
this.btnYes.Name = "btnYes";
this.btnYes.Size = new System.Drawing.Size(75, 23);
this.btnYes.TabIndex = 2;
this.btnYes.Text = "Yes";
this.btnYes.Tooltip = "";
this.btnYes.UseVisualStyleBackColor = true;
this.btnYes.Click += new System.EventHandler(this.btnYes_Click);
//
// btnNo
//
this.btnNo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnNo.FocusDuesEnabled = false;
this.btnNo.Location = new System.Drawing.Point(220, 88);
this.btnNo.Name = "btnNo";
this.btnNo.Size = new System.Drawing.Size(75, 23);
this.btnNo.TabIndex = 3;
this.btnNo.Text = "No";
this.btnNo.Tooltip = "";
this.btnNo.UseVisualStyleBackColor = true;
this.btnNo.Click += new System.EventHandler(this.btnNo_Click);
//
// btnCancel
//
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnCancel.FocusDuesEnabled = false;
this.btnCancel.Location = new System.Drawing.Point(301, 88);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
this.btnCancel.TabIndex = 1;
this.btnCancel.Text = "Cancel";
this.btnCancel.Tooltip = "";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// btnOK
//
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btnOK.FocusDuesEnabled = false;
this.btnOK.Location = new System.Drawing.Point(220, 88);
this.btnOK.Name = "btnOK";
this.btnOK.Size = new System.Drawing.Size(75, 23);
this.btnOK.TabIndex = 4;
this.btnOK.Text = "OK";
this.btnOK.Tooltip = "";
this.btnOK.UseVisualStyleBackColor = true;
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
//
// MessageForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(394, 129);
this.Controls.Add(this.btnYes);
this.Controls.Add(this.btnNo);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.picImage);
this.Controls.Add(this.lblText);
this.Controls.Add(this.btnOK);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MessageForm";
this.Padding = new System.Windows.Forms.Padding(15);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Title";
((System.ComponentModel.ISupportInitialize)(this.picImage)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
internal Dark.WinForms.Controls.dButton btnCancel;
internal Dark.WinForms.Controls.dButton btnNo;
internal Dark.WinForms.Controls.dButton btnYes;
internal Dark.WinForms.Controls.dButton btnOK;
internal System.Windows.Forms.PictureBox picImage;
internal System.Windows.Forms.Label lblText;
}
Вы не можете переопределить это поведение MessageBox
. В решении используется либо специальное окно сообщений, проверьте this, либо реализуйте свой собственный MessageBoxForm
и добавьте к нему свои пользовательские настройки, отметьте this.
Вы можете использовать "Непрямой API-интерфейс задачи" от Microsoft, который поможет вам показать пользовательские диалоги.
Вы не можете напрямую изменить значок MessageBox, чтобы я его искал, и я нашел решение для этого. мы можем изменить значок окна сообщения с помощью окна.
Слушайте ссылку MSDN Magazine.