2010-05-25 41 views
16

Necesito ser capaz de desplazar texto en una etiqueta. Estoy usando esto para la parte de créditos de un juego de tres en raya. ¿Cómo puedo hacer que esto suceda? Solo nos enseñaron a desplazarse por los valores numéricos en la barra de desplazamiento, no en el texto.Barra de desplazamiento en una etiqueta

private void xGameCreditsButton_Click(object sender, EventArgs e) 
     { 
      this.xWinnerLabel.BackColor = Color.White; 
      this.xCreditsScrollBar.Visible = true; 
      this.xWinnerLabel.Text = "This game was made possible with the help of: blah bla blah"; 
     } 

Respuesta

31

En lugar de una etiqueta, use un cuadro de texto y configure las propiedades ScrollBars, MultiLine y WordWrap según sus necesidades. Para deshabilitar la edición del TextBox (y, por lo tanto, hacer que se comporte de forma similar a una etiqueta), use la propiedad ReadOnly.

+0

Ok, lo cambio a un cuadro de texto, pero necesito implementar la barra de desplazamiento sin configurarlos en la ventana de propiedades, ¿cómo puedo hacer eso? –

+0

Cada propiedad que establezca en la ventana de propiedades también se puede configurar en código; su pregunta ya muestra un buen ejemplo de configuración de las propiedades 'BackColor' y' Text'. Simplemente haga lo mismo con las propiedades mencionadas en mi respuesta. – Heinzi

+0

hola intenté usar un cuadro de texto para esto, pero mis líneas nuevas de texto no se ajustan a una nueva línea cuando se muestran en un cuadro de texto, pero sí en una etiqueta. No estoy seguro de por qué ya que es un 'Environment.NewLine' pero es así, así que uso la etiqueta, pero no se desplazará, ¿hay algo que pueda hacer para esto? – f1wade

4

Si no tiene que ser una etiqueta, puede hacer que sea un campo de edición de varias líneas de solo lectura. El control de edición se desplazará automáticamente.

+0

Esta es una mejor idea. – SLaks

+0

no tiene que ser una etiqueta, pero la barra de desplazamiento es un requisito ¿no hay una forma de hacerlo con una etiqueta? –

+0

No. Las etiquetas no tienen una barra de desplazamiento incorporada. Si desea pintar solo una parte de la etiqueta, tendrá que implementar el desplazamiento usted mismo. (NOTA: mi experiencia es más con WinForms. Puede haber una manera de hacer esto en WPF por lo que sé). –

4

Un control TextBox desplazable de solo lectura será mucho más fácil de usar.

Si realmente desea utilizar una etiqueta, puede poner la etiqueta dentro de un control Panel desplazable y establecer la propiedad AutoSize de la etiqueta en verdadero.

1

Dado que puede haber una razón para no utilizar un cuadro de texto (no querer que el texto es seleccionable y copiable por ejemplo) aquí es otra solución que funciona para mí:

Coloque un panel en la ubicación en la que desea la etiqueta, establecer su propiedad AutoScroll en verdadero. A continuación, coloque la etiqueta en el panel, anclarla y establecer su propiedad AutoSize en verdadero. Esto hará que el panel proporcione las barras de desplazamiento si el texto de la etiqueta se extiende fuera del panel.

Puede tener que establecer MaximumSize para la etiqueta si desea que el texto solo se desplace en una dirección (establezca un ancho máximo si solo desea desplazamiento vertical o configure una altura máxima si solo desea desplazamiento horizontal).

Cuestiones relacionadas