Ich versuche gerade, einen Dialog mit einem ListView zu machen, der seine Items von einer MySQL Datenbank nimmt. Ich habe es gerade funktioniert und jetzt möchte ich die Kopfzeile mit fettem Text versehen.WinForms Column Header FontStyle
Dies ist meine aktuellen Code:
public Form1()
{
InitializeComponent();
lvInstrumente.Columns.Add("ID", 30, HorizontalAlignment.Left);
lvInstrumente.Columns.Add("Hersteller", 100, HorizontalAlignment.Left);
lvInstrumente.Columns.Add("Instrument", 100, HorizontalAlignment.Left);
lvInstrumente.Columns.Add("Preis", 50, HorizontalAlignment.Left);
lvInstrumente.Columns.Add("Typ", 100, HorizontalAlignment.Left);
lvInstrumente.Columns.Add("Farbe", 110, HorizontalAlignment.Left);
lvInstrumente.Columns.Add("Beschreibung", 550, HorizontalAlignment.Left);
lvInstrumente.FullRowSelect = true;
lvInstrumente.GridLines = true;
lvInstrumente.View = View.Details;
}
private void btnSelect_Click(object sender, EventArgs e)
{
// Verbindung zu DB aufbauen
var db = new MySqlDB("localhost", "3306", "musicstoreuster");
var h = db.Connect();
if (h == null)
return;// Wenn die Verbindung nicht klappt, steigen wir hier aus
var list = db.Select("product");
foreach(var item in list)
{
Console.WriteLine(item.ToString());
var ds = item.Split(new char[] { ';' });
ListViewItem lvItem = new ListViewItem(ds);
lvInstrumente.Items.Add(lvItem);
}
db.Close();
}
Um den Header Bold zu machen endete ich mit dieser "Lösung" bis
for (int i = 0; i < lvInstrumente.Columns.Count; i++)
{
lvInstrumente.Columns[i].ListView.Font = new Font(lvInstrumente.Columns[i].ListView.Font, FontStyle.Bold);
}
Aber jetzt, wenn ich drücken Sie die Select-Taste alles Bold. Was muss ich hinzufügen/ändern, um zu verhindern, dass die Elemente auch fett sind?
Wenn Sie ListView verwenden, müssen Sie OwnerDraw für Ihre ListView auf true setzen und DrawColumnHeader selbst implementieren, wie hier http://stackoverflow.com/a/27766256/891715 oder http://stackoverflow.com/a/9040411/891715 – Arie