Hier zwei weitere Screenshots. Zuerst wie es ist:

Und hier, wie es sein sollte:

Man sieht:
a) es fehlen höchstens ein paar Pixel zur korrekten Breite
b) das Problem tritt nur dann auf, wenn die Breite einer Zelle breiter als die der Überschrift ist
Zu deinen Fragen:
In der Regel werden die Zellen wie folgt gefüllt, meist ist oTag und oValue identisch (macht eine darüberliegende Methode), manchmal wird oValue vorher manuell in einen String konvertiert. Da bin ich aber noch dran, zu prüfen, ob hier noch ein Bug versteckt ist. Ist aus historischen Gründen etwas unübersichtlich.
public void SetCell(int iRow, int iCol, object oTag, object oValue)
{
GridCell oCell;
...
oCell = Cells[iCol+FixedColCount, iRow+FixedRowCount];
oCell.Tag = oTag;
oCell.Value = oValue;
}
Padding habe ich nicht verändert.
Was mir noch aufgefallen ist:
1.) Wenn ich die Breite einer Zelle (ohne AutoWidth) auf z.B. 19 setze, dann ist die Zelle nachher netto 18 Pixel breit. Wenn man den recten Rand mitrechnet, käme man auf die 19.
2.) Folgendes kommt gar nicht gut:
Cols[iCol].Width = 19;
Cols[iCol].AutoWidth = eWidthType.AutoWidth;
Dies setzt die Zelle seltsamerweise immer auf 19 (18) Breite (also nix isch mit AutoWIdth). Aber:
/* Cols[iCol].Width = 19; */
Cols[iCol].AutoWidth = eWidthType.AutoWidth;
Dies geht, es ist fast richtig (bis auf die hier diskutierte Problematik halt). Ich kann aber im Programm schlecht ausschließen, dass die Spalte zu einem früheren Zeitpunkt schon auf eine feste Breite gesetzt war. Aber wie sollte ich Width dann "rücksetzen"? Geht IMHO doch gar nicht. Oder hast du hier eine Art reservierten Wert (z.B. 0 oder -1).
In wie weit ist die Reihenfolge eigentlich wichtig? So wie ich es (bis jetzt) sehe, sollte es egal sein, ob ich die Zellen zuerst fülle, dann die Spaltenbreite setze oder umgekehrt, denn das Ganze kommt erst beim nächsten Refresh() zu tragen.
Wie wäre es mit dem erwähnten Workaround (also die Angabe einer Anzahl Pixel, die zur Berechnung der Breite einfach hinzuaddiert wird)? Würde mein Problem lösen, weil so kann ich es auf die Dauer nicht lassen.
Viele Grüße
Rudi