Entwickler-Ecke

WinForms - ListView TextAlign der 1. Spalte + Einträge


erfahrener Neuling - Mo 25.04.16 14:41
Titel: ListView TextAlign der 1. Spalte + Einträge
Hallo,

ich befürchte, die Antwort bereits zu kennen, aber gibt es eine Möglichkeit, 1. die erste Spalte Centermäßig anzuordnen und 2. die Einträge dazu auch, ohne irgendwelche Draw-Methoden zu überschreiben (davon hab ich nämlich keine Ahnung)?

Das ganze soll etwa so aussehen:
Beispiel

Danke für Antworten, muss doch eigntl möglich sein, oder?


Th69 - Mo 25.04.16 15:36

Hallo,

nein, ohne Selberzeichnen kann das ListView die erste Spalte nur linksbündig anzeigen.
Aber der Aufwand dafür ist recht gering:
- OwnerDraw = true
- Ereignis DrawSubItem abonnieren und den Text per DrawString (mit Alignment = StringAlignment.Center) zeichnen
- für den Header das Ereignis DrawColumnHeader nehmen
s. z.B. Make an owner-drawn ListView control that draws server status information in C# [http://csharphelper.com/blog/2011/09/make-an-owner-drawn-listview-control-that-draws-server-status-information-in-c/]


erfahrener Neuling - Di 26.04.16 09:44

Jo danke dafür!

Ist ja wirklich nicht sooo kompliziert.
Habe es jetzt ganz simpel gemacht:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private void listView1_DrawColumnHeader(object sender,DrawListViewColumnHeaderEventArgs e)
{
    string title = "Beschreibung";
    
    StringFormat format = new StringFormat();
    format.Alignment = StringAlignment.Center;
    format.LineAlignment = StringAlignment.Center;

    e.Graphics.FillRectangle(Brushes.Brown, e.Bounds);
    e.Graphics.DrawString(title, e.Font, Brushes.Black, e.Bounds, format);
}


EDIT: Frage in neues Thema umverlagert http://www.entwickler-ecke.de/viewtopic.php?t=115413