2011-04-17 4 views
6

De acuerdo a las especificaciones (http://msdn.microsoft.com/en-us/library/k63c05yf.aspx)Por qué no autoSize propiedad en Windows Formulario cuadro de texto aparecerá en IntelliSense

cuadros de texto en Windows Forms debe tener una propiedad autosize.

Y en realidad no se rompe cuando escribe en TextBox1.AutoSize = true. Sin embargo, no parece aparecer en la lista de propiedades de IntelliSense.

¿Por qué es esto?

He intentado volver a compilar y todo compila, pero la propiedad textbox.autosize nunca aparece.

Respuesta

10

La propiedad AutoSize de cuadro de texto es siempre cierto, forzado por el constructor. La propiedad está oculta en la clase principal (TextBoxBase) para evitar establecerla accidentalmente en falso. Tiene [Browsable (falso)] para ocultarlo en la cuadrícula de propiedades, [EditorBrowsable (EditorBrowsableState.Never)] para ocultarlo en la ventana emergente de IntelliSense. Puede cambiarlo sin embargo:

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
     textBox1.AutoSize = false; 
     textBox1.Height += 10; 
    } 
} 

Sí, no se ve genial. Ahora sabes por qué está escondido.

1

El Control.AutoSize propiedad (y su anulación en TextBoxBase) se declara con el atributo siguiente:

[EditorBrowsable(EditorBrowsableState.Never)] 

IntelliSense utiliza esta propiedad para decidir no mostrar la propiedad en la lista de terminaciones.

(no sé lo suficiente sobre las formas de Windows a decir por qué esta propiedad está marcado no navegable.)

+0

oh ok. sería interesante saber por qué esto fue en realidad – Diskdrive

+0

@stickman: La razón es porque los cuadros de texto se redimensionan automáticamente, según la altura de la fuente y el tamaño de la fuente. Como dice Hans, * puedes * cambiar la altura del cuadro de texto manualmente, pero se ve raro porque hay un montón de espacio vacío. –

Cuestiones relacionadas