InvariantCulture uses . as a NumberDecimalSeparator not ,
Since you forced to use Float style, this style includes only AllowDecimalPoint in a separator styles, your method thinks this , is a decimal separator but InvariantCulture does not use it. That's why you get exception.
There are a few things you can do. One option can be Clone an InvariantCulture, set NumberDecimalSeparator property to , and use that cloned culture in your TryParse method.
float f;
var clone = (CultureInfo)CultureInfo.InvariantCulture.Clone();
clone.NumberFormat.NumberDecimalSeparator = ",";
var result = float.TryParse("5,28", NumberStyles.Float, clone, out f); // true
Or you can use a culture that already has , as a NumberDecimalSeparator like tr-TR culture.1
float f;
var result = float.TryParse("5,28", NumberStyles.Float,
CultureInfo.GetCultureInfo("tr-TR"), out f); // true
1:Since I'm from Turkey :)