MessageBox.Show() Custom Icon?

You can use Task Dialog Indirect API from Microsoft, which will help you to show custom dialogs.


You can't override this behavior of MessageBox. The solution is either use some custom message box, check this, or implement your own MessageBoxForm and add your custom settings to it, check this.


I wrote one a little while ago, it works exactly like the regular messagebox class.

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 (Form): 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 (Designer Code): 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;
}