My solution :
myLabel.text = Trim(someText, myLabel.Font, myLabel.MaximumSize.Width);
public static string Trim(string text, System.Drawing.Font font, int maxSizeInPixels)
{
var trimmedText = text;
var graphics = (new System.Windows.Forms.Label()).CreateGraphics();
var currentSize = Convert.ToInt32(graphics.MeasureString(trimmedText, font).Width);
var ratio = Convert.ToDouble(maxSizeInPixels) / currentSize;
while (ratio < 1.0)
{
trimmedText = String.Concat(
trimmedText.Substring(0, Convert.ToInt32(trimmedText.Length * ratio) - 3),
"...");
currentSize = Convert.ToInt32(graphics.MeasureString(trimmedText, font).Width);
ratio = Convert.ToDouble(maxSizeInPixels) / currentSize;
}
return trimmedText;
}