2017-02-21 1 views
0

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?

+0

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

Antwort

0

Legen Sie die Schriftart fest, bevor Sie das Element hinzufügen. Manche Dinge wie folgt aus:

var ds = item.Split(new char[] { ';' }); 
ListViewItem lvItem = new ListViewItem(ds); 

//set the font to the item 
lvItem.Font = new Font(lvItem.Font,FontStyle.Regular); 

Items.Add(lvItem); 

das funktioniert, ich getestet: v enter image description here

Auch ich Testen habe und die Header fett zu machen, mit nur dieser Linie funktioniert

lvInstrumente.Columns[0].ListView.Font = new Font(lvInstrumente.Columns[0].ListView.Font, FontStyle.Bold);