64 lines
1.8 KiB
C#
64 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Media;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace W4Gui.Components
|
|
{
|
|
public class FloatUpDown : GenericUpDown<float>
|
|
{
|
|
internal override string allowedChars
|
|
{
|
|
get
|
|
{
|
|
return "+-.infa";
|
|
}
|
|
}
|
|
|
|
internal override string formatText(float val)
|
|
{
|
|
string fstr = "";
|
|
if (float.IsNaN(Value))
|
|
{
|
|
fstr = "NaN";
|
|
}
|
|
else if (float.IsNegativeInfinity(Value))
|
|
{
|
|
fstr = "-Inf";
|
|
}
|
|
else if (float.IsPositiveInfinity(Value))
|
|
{
|
|
fstr = "+Inf";
|
|
}
|
|
else
|
|
{
|
|
fstr = Convert.ToDouble(Value).ToString("G9", CultureInfo.InvariantCulture);
|
|
if (!fstr.Contains("."))
|
|
fstr += ".0";
|
|
}
|
|
return fstr;
|
|
}
|
|
|
|
internal override float parseValue(string val)
|
|
{
|
|
float fval = 0.0f;
|
|
if (val.Equals("NaN", StringComparison.InvariantCultureIgnoreCase))
|
|
fval = float.NaN;
|
|
else if (val.Equals("Inf", StringComparison.InvariantCultureIgnoreCase))
|
|
fval = float.PositiveInfinity;
|
|
else if (val.Equals("+Inf", StringComparison.InvariantCultureIgnoreCase))
|
|
fval = float.PositiveInfinity;
|
|
else if (val.Equals("-Inf", StringComparison.InvariantCultureIgnoreCase))
|
|
fval = float.NegativeInfinity;
|
|
else
|
|
float.TryParse(val, out fval);
|
|
|
|
return fval;
|
|
}
|
|
}
|
|
}
|