2010-11-29 21 views
7

Aquí hay una foto de un System.Windows.Forms.ListView usando LargeIconsEl texto de ListView está truncado: ¿cómo se muestra el texto completo de un elemento?

alt text

El elemento seleccionado se muestra todo lo que es el texto

por ejemplo, El elemento superior izquierdo muestra solo 11 caracteres de su nombre, se muestra completamente si está seleccionado. ¿Cómo puedo hacer que muestre todo el texto (o al menos más de 11 caracteres) para elementos que no están seleccionados?

+2

es probable que tenga que ir propietario dibuja ... Este es el comportamiento estándar, incluso en el Explorador de Windows. –

+0

Cuando configuro la vista LargeIcon en el Explorador (win-7) esto no ocurre. los nombres de archivo, incluso * muy * largos, siempre se muestran completamente. – Anonym

+0

Idea alternativa: ¿Has probado usar el modo vista en mosaico? –

Respuesta

0

Tuve este problema hace un tiempo y lo resolví insertando un espacio después de x caracteres y/o antes de una letra mayúscula, por lo que el texto está envuelto donde yo quería. Esto es un truco, pero es una solución fácil. Por supuesto, necesita realizar un seguimiento de los cambios realizados en el texto para poder revertirlo si el usuario selecciona el elemento para un uso posterior.

2

Hay DrawItem evento http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.drawitem.aspx. Dentro de este evento tiene acceso al método System.Drawing.Graphics.DrawString.

void view_DrawItem(object sender, DrawListViewItemEventArgs e) 
    { 
     e.Graphics.DrawString(e.Item.Text, drawFont, Brushes.Black, 
      new RectangleF(e.Item.Position.X, 
       e.Item.Position.Y, 
       20, 
       160)); 

    } 

Ingresé algunos valores para ancho/alto, pero debe usar MeasureString o un método similar. Además, no olvide configurar OwnerDraw = true en ListView; de lo contrario, no funcionará.

+0

Esto parece muy prometedor, pero ¿qué es "drawFont"? Me aparece: "El nombre 'drawFont' no existe en el contexto actual" –

+0

OK, creé mi propia fuente en función de las propiedades de ListView, pero el resultado es 9 veces más feo que una bolsa de colillas, y tendría que añadir los íconos también ... tiene que haber una manera más simple. DEBERÍA ser una propiedad en ListView o ListViewItem ("ShowAllText" o algo así). –

0

Advertencia: esto funcionó para mí cuando el tipo de vista era Detalles, No he intentado con LargeIcons.

Después de escribir la salida (la mía estaba a granel) a la vista de lista, agregue el siguiente:

lstResults.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.HeaderSize); 
lstResults.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent); 
Cuestiones relacionadas