Eigentlich gar nicht so schwer. Du kannst das ganze ja per Doppelklick auf die entsprechende Spalte machen. Welche Schritte musst du durchführen?
1.
Um die Spalte anzupassen, musst Du eigentlich wissen, wie lange der längste String in der Spalte ist. Lies dir die komplette Spalte mal in ein Array ein.
2.
Nun brauchst du ein Graphics-Objekt, welches du über die CreateGraphics-Methode deines DataGrids bekommst:
Code:
System.Drawing.Graphics g;
g = dataGrid.CreateGraphics();
3.
Du brauchst weiters auch noch ein Font-Objekt - und zwar von dem Font (inkl. Größenangaben etc.) in dem die Feldinhalte dargestellt werden.
Hierzu kannst Du die Klasse System.Drawing.Font verwenden. Der übergibst du das Font-Objekt des dataGrids für die Column.
4.
Nun hast Du eigentlich alle notwendigen Informationen, um die Breite des längsten Strings zu ermitteln.
Hierzu kannst du die MeasureString-Methode des oben erzeugten Graphics-Objectes benutzen. Dem übergibst du den Inhalt jeder einzelnen Zeile in deiner Spalte und das Font-Objekt, das Du oben erzeugt hast.
Code:
System.Drawing.SizeF stringsize;
stringsize = g.MeasureString(test, font);
Rückgabewert ist die Breite des enthaltenen Strings in PIxel. (Achtung, Size-Objekt, kannst du mit stringsize.Width und stringsize.Height drauf zugreifen). Hier ermittelst Du den längsten Eintrag und auf diese Breite + 2 oder 3 Pixel setzt Du dann die Spalte.