2012-10-03 14 views
6

Este es mi código que utilizo ...¿Cómo cambiar el texto en los botones del buzón de mensajes?

MessageBox.Show("Do you want to save changes..?", "Save", MessageBoxButtons.YesNoCancel); 

quiero cambiar el texto en los botones de cuadro de mensaje es posible .. ??

+1

http://www.codeproject.com/Articles/18399/Localizing-System-MessageBox – alexn

+1

tal vez esto ayuda: [http://www.codeproject.com/Articles/18399/Localizing-System-MessageBox](http://www.codeproject.com/Articles/18399/Localizing-System-MessageBox) – SergioMSCosta

Respuesta

7

Por lo que yo sé, no hay forma de cambiar el texto predeterminado en una ventana emergente MessageBox.

Lo más fácil que puede hacer es crear un formulario simple con una etiqueta y un par de botones. Aquí hay un ejemplo simple que puede usar para incluir su código. Puede personalizar el formulario como lo desee.

public class CustomMessageBox:System.Windows.Forms.Form 
{ 
    Label message = new Label(); 
    Button b1 = new Button(); 
    Button b2 = new Button(); 

    public CustomMessageBox() 
    { 

    } 

    public CustomMessageBox(string title, string body, string button1, string button2) 
    { 
     this.ClientSize = new System.Drawing.Size(490, 150); 
     this.Text = title; 

     b1.Location = new System.Drawing.Point(411, 112); 
     b1.Size = new System.Drawing.Size(75, 23); 
     b1.Text = button1; 
     b1.BackColor = Control.DefaultBackColor; 

     b2.Location = new System.Drawing.Point(311, 112); 
     b2.Size = new System.Drawing.Size(75, 23); 
     b2.Text = button2; 
     b2.BackColor = Control.DefaultBackColor; 

     message.Location = new System.Drawing.Point(10, 10); 
     message.Text = body; 
     message.Font = Control.DefaultFont; 
     message.AutoSize = true; 

     this.BackColor = Color.White; 
     this.ShowIcon = false; 

     this.Controls.Add(b1); 
     this.Controls.Add(b2); 
     this.Controls.Add(message); 
    }   
} 

A continuación, puede llamar a esto desde cualquier lugar donde necesite desea:

 CustomMessageBox customMessage = new CustomMessageBox(
      "Warning", 
      "Are you sure you want to exit without saving?", 
      "Yeah Sure!", 
      "No Way!" 
      ); 
     customMessage.StartPosition = FormStartPosition.CenterParent; 
     customMessage.ShowDialog(); 
0

Creo que el cuadro de mensaje es una bestia de la API de Win32, lo que significa que está fuera del ámbito de .NET. Por lo tanto, no tiene en cuenta la personalización/localización. Por lo tanto, necesita desplegar su propio mensaje como sugiere James Miller.

Por qué MS decidió no poner en .NET de mensaje habilitados en las formas se me escapa ...

+1

[Diálogos de tarea] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb787471%28v=vs.85%29.aspx) están destinados a reemplazar los cuadros de mensaje. – Dialecticus

Cuestiones relacionadas