2009-11-10 20 views
7

Tengo un control de usuario de Windows Form con una propiedad de cadena para configurar el texto de un cuadro de texto. Esta cadena puede ser multilínea.Permitir propiedades de cadena multilínea en la ventana Propiedades

He notado que en algunos controles con una propiedad de texto, y en lugar de tener que escribir en el cuadro de texto de la propiedad de una sola línea, aparece un pequeño mensaje emergente donde puede escribir varias líneas. (De hecho, un control de cuadro de texto de Windows Forms permite esto en la propiedad Text).

¿Cómo habilito esta funcionalidad en la ventana de propiedades para la propiedad que he diseñado?

El siguiente es no verdadero código en mi aplicación, pero un ejemplo de cómo este tipo de propiedad podría definirse

public string Instructions 
{ 
    get 
    { 
     return TextBox1.Text; 
    } 
    set 
    { 
     TextBox1.Text = value; 
    } 
} 

Respuesta

14

Puede utilizar el EditorAttribute con un MultilineStringEditor:

[EditorAttribute(typeof(MultilineStringEditor), 
       typeof(System.Drawing.Design.UITypeEditor))] 
public string Instructions 
{ 
    get 
    { 
     return TextBox1.Text; 
    } 
    set 
    { 
     TextBox1.Text = value; 
    } 
} 

Para evitar agregar una referencia a System.Design y, por lo tanto, requerir el marco completo, también puede escribir el atributo como este:

[EditorAttribute(
    "System.ComponentModel.Design.MultilineStringEditor, System.Design", 
    "System.Drawing.Design.UITypeEditor")] 

Aunque esto no es un problema ahora que han dejado de dividir el marco en un perfil de cliente y uno completo.

+1

Lo siento, me faltan algunas referencias. No estoy obteniendo MiltilineStringEditor como una opción en mi Intellisense. Incluso cuando uso System.ComponentModel.Design.MultilineStringEditor. Y no compilará Si logro que funcione, le doy el crédito por la respuesta correcta, aunque ... – David

+1

debe hacer referencia a 'System.Design.dll' – manji

+1

Perfecto. Lo descubrí por mi cuenta y estaba volviendo a publicarlo como un comentario. Gracias. Voy a mantener esto abierto por un día más o menos para que esperemos que obtengan algunos votos sobre la respuesta junto a la mía. Este era un conocimiento bastante oscuro, y creo que deberías ser recompensado. – David

Cuestiones relacionadas