2009-02-18 6 views

Antwort

5

Für die Zukunft, hier ist, wie ich es gelöst:

// Make owner-drawn to be able to give different alignments to single subitems 
lvResult.OwnerDraw = true; 
... 

// Handle DrawSubItem event 
private void lvResult_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) 
{ 
    // This is the default text alignment 
    TextFormatFlags flags = TextFormatFlags.Left; 

    // Align text on the right for the subitems after row 11 in the 
    // first column 
    if (e.ColumnIndex == 0 && e.Item.Index > 11) 
    { 
     flags = TextFormatFlags.Right; 
    } 

    e.DrawText(flags); 
} 

// Handle DrawColumnHeader event 
private void lvResult_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) 
{ 
    // Draw the column header normally 
    e.DrawDefault = true; 
    e.DrawBackground(); 
    e.DrawText(); 
} 

Es war notwendig, die DrawColumnHeader, da ansonsten keine Text- oder Spaltentrenn gezogen würde zu handhaben.

9

Die Klasse "ColumnHeader" besitzt eine Eigenschaft "TextAlign", die die Ausrichtung für alle Unterelemente in der Spalte ändert. Wenn Sie etwas ausgefalleneres brauchen, können Sie immer das "DrawSubItem" -Ereignis verwenden und es zum Besitzer ziehen lassen.

+0

Ja, ich würde etwas mehr Phantasie brauchen, und das war, was ich versuchte, durch "einzelnen Unterpunkt" und "Text in der gleichen Spalte ausgerichtet anders ausgerichtet". Ich werde mir das Ereignis "DrawSubItem" ansehen. – Fueled

+0

Ich kann Ihre Antwort nicht als akzeptiert erklären, weil ich denke, dass meine Frage nicht richtig gelesen wurde und Sie keine Code-Beispiele zur Verfügung gestellt haben. Aber da es mich in die richtige Richtung wies, habe ich Sie gewählt. Vielen Dank! – Fueled

7

Beispiel: Aufgrund einer Einschränkung des zugrunde liegenden nativen Listview-Steuerelement (wohnhaft in comctl32.dll), die erste Säule:

listView1.Columns[1].TextAlign = HorizontalAlignment.Right; 

wird Spalte "1" Ausrichtung nach rechts

6

Hinweis eingestellt kann nicht ausgerichtet werden. Es wird immer links ausgerichtet sein. Die zweite Einschränkung besteht in der benutzerdefinierten Zeichnung (benutzerdefinierte Unterelemente): Wenn Sie die Neuanordnung von Spalten aktivieren, wird der Text der ersten Spalte NICHT korrekt neu angeordnet. Ich habe diese Einschränkung gelöst (würde es nicht als Fehler bezeichnen, da der ListView viele Listenstile unterstützt und die interne Datenstruktur einer Listenansicht eine Baumstruktur ist), indem man die erste Spalte nicht neu anordnet, was in den meisten Fällen kein Problem darstellt , weil Sie eine Art Schlüssel für die erste Spalte wie Zahl oder etwas Ähnliches verwenden werden.

Verwandte Themen