2016-07-07 28 views
1

Ich arbeite an einer Windows Forms-Anwendung und ich habe eine DataGrid, für die ich versuche, die Höhe der Spaltenüberschriften zu erhöhen.Erhöhen Sie die Höhe der Spaltenüberschrift in einem Windows Forms-DataGrid (nicht DataGridView)

Ich weiß, wie es für eine Datagridview getan, aber ich bin unsicher über die DataGrid.

Ich habe eine Spalte Actual \n Qty genannt, und dies, wie unten angezeigt wird:

enter image description here

Darf ich einen Weg kennen wir Spaltenkopfhöhe erhöhen könnte?

+0

Es ist CaptionFont.Size –

+0

@HansPassant Ich denke, dies vergrößert nur die Größe des Textes in der Kopfzeile, aber nicht die Höhe der Kopfzeile? Ich habe einen Spaltennamen in mehreren Zeilen, aber zwei Zeilen passt nicht in die aktuelle Kopfzeile – DoIt

+0

@Dev Ist es wirklich '.Net 1.1' oder Sie haben es gerade wegen' DataGrid' getaggt? Wenn es nur wegen 'DataGrid' ist, können Sie das Tag in' .Net' ändern. –

Antwort

1

Die Höhe der Spaltenüberschrift basiert auf der HeaderFont Eigenschaft und wird in einem privaten Feld headerFontHeight gespeichert. Sie können das Feld mit Reflexion erhalten und seinen Wert auf diese Weise ändern:

var p = typeof(DataGrid).GetField("headerFontHeight", 
    System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 
p.SetValue(dataGrid1, dataGrid1.HeaderFont.Height * 2); 

var m = typeof(DataGrid).GetMethod("OnLayout", 
    System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 
m.Invoke(dataGrid1, new object[] { null }); 
dataGrid1.Invalidate(); 

enter image description here

Sie können die Höhe zuweisen, die Sie denken, genug ist, oder Sie können die Höhe des Textes aller Spalten berechnen und setzen die Feld auf den Maximalwert.