¿Cómo puedo permitir seleccionar y copiar texto desde MessageBox en WPF?

InformationsquelleAutor WhoIsNinja | 2011-01-26

5 Comentarios

  1. 98

    Si usted no necesita selección de texto como un requisito, sólo tiene que utilizar el Sistema.Windows.Los formularios.MessageBox. Se asigna el sistema por defecto que permite la copia de su contenido con Ctrl+C.

    • –> Total Pequeñeces <– WinForms no es de WPF. Esto es realmente un muy buen truco, aunque.
    • A. R.: Es todavía parte de .NET y en la mayoría de los casos usted puede conseguir lejos con la mezcla de ellos (y no es como si este utiliza cualquier WinForms controles de WPF o similar).
    • Esta puede ser la mejor respuesta usando un estándar .NET «MessageBox», pero creo que la solución ideal (y el que literalmente responder a la O. P. Q) sería un cuadro de mensaje que funciona como los que se muestran por Visual Studio, donde el usuario puede marcar cualquier parte o todo el texto en ellos, como si todo el texto en algunos de fronteras, sólo lectura «cuadro de texto» en el Formulario con el mismo color de fondo como la Forma. Creo que Microsoft ha desarrollado algunos personalizado «MessageBox» para que los que no están compartiendo con nosotros en .NET.
  2. 24

    Puedes usar Ctrl+C, mientras que el cuadro de mensaje que tiene el foco, pero se le dará mucho más texto del que sólo el mensaje de error.

    por ejemplo,

        MessageBox.Show("Message", "Message Title", MessageBoxButton.OK);

    Sería copiar y pegar como:

        ---------------------------
        Message Title 
        ---------------------------
        Message
        ---------------------------
        OK   
        ---------------------------
  3. 6

    Si vas a mostrar el cuadro de mensaje…

    System.Windows.Forms.Clipboard.SetDataObject(messageToShowInMsgBoxString, true);

    va a copiar el elemento en el portapapeles.

    • No es muy agradable para darle una paliza a el portapapeles del usuario, sin embargo.
    • Sí, pero se podría añadir que para un evento de clic de botón, de forma que sólo copias, si así lo desean.
    • Pero MessageBox no (creo) vamos a agregar un botón de copiar…
  4. 6

    Me hizo de esta manera:

    string msgtext = "message text";
    if (MessageBox.Show(msgtext, "bla bla bla. (OK to copy)", MessageBoxButtons.OKCancel) == System.Windows.Forms.DialogResult.OK)
      { Clipboard.SetText(msgtext); }

    Funciona bastante bien.

    • para WPF: if (msgtext, "bla bla bla. (OK to copy)", MessageBoxButton.OKCancel, MessageBoxImage.Information) == MessageBoxResult.OK)
    • Jugué esta sugerencia un poco el uso de Sí/No. var response = MessageBox.Show("...\r\n\r\nCopy to clipboard?", "", MessageBoxButton.YesNo); y, a continuación, if (response == MessageBoxResult.Yes) { ClipBoard.SetText("..."); }
  5. 1

    El mejor enfoque sería utilizar una Ventana con un texto seleccionable control, como en un cuadro de texto por ejemplo. Yo puedo decir por experiencia que esta es la manera más fácil, y no tomará mucho tiempo o cambios en el código a implementar.

Dejar respuesta

Please enter your comment!
Please enter your name here