protected virtual void SaveText()
{
if (element == null)
{
return;
}
var es = element;
var tb = this.textBox;
string tbText = this.textBox.Text;
var numStyle = NumberStyles.Any;
if (tbText.StartsWith("0x"))
{
numStyle = NumberStyles.HexNumber;
tbText = tbText.Substring(2);
}
bool hasFlags = es.options.Length == 0 && es.flags.Length > 1;
switch (element.type)
{
case ElementValueType.UInt:
case ElementValueType.FormID:
{
uint i;
if (element.type == ElementValueType.FormID)
{
numStyle = NumberStyles.HexNumber;
}
if (!uint.TryParse(tbText, numStyle, null, out i))
{
Error.SetError(this.TextBox, string.Format("Invalid {0} Format", element.type));
}
else
{
Error.SetError(this.TextBox, null);
SetCurrentData(new ArraySegment<byte>(TypeConverter.i2h(i)));
}
}
break;
case ElementValueType.Int:
{
int i;
if (!int.TryParse(tbText, numStyle, null, out i))
{
Error.SetError(this.TextBox, string.Format("Invalid {0} Format", element.type));
}
else
{
Error.SetError(this.TextBox, null);
SetCurrentData(new ArraySegment<byte>(TypeConverter.si2h(i)));
}
}
break;
case ElementValueType.Float:
{
float i;
if (!float.TryParse(tbText, numStyle, null, out i))
{
Error.SetError(this.TextBox, string.Format("Invalid {0} Format", element.type));
}
else
{
Error.SetError(this.TextBox, null);
SetCurrentData(new ArraySegment<byte>(TypeConverter.f2h(i)));
}
}
break;
case ElementValueType.UShort:
{
ushort i;
if (!ushort.TryParse(tbText, numStyle, null, out i))
{
Error.SetError(this.TextBox, string.Format("Invalid {0} Format", element.type));
}
else
{
Error.SetError(this.TextBox, null);
SetCurrentData(new ArraySegment<byte>(TypeConverter.s2h(i)));
}
}
break;
case ElementValueType.Short:
{
short i;
if (!short.TryParse(tbText, numStyle, null, out i))
{
Error.SetError(this.TextBox, string.Format("Invalid {0} Format", element.type));
}
else
{
Error.SetError(this.TextBox, null);
SetCurrentData(new ArraySegment<byte>(TypeConverter.ss2h(i)));
}
}
break;
case ElementValueType.Byte:
{
byte i;
if (!byte.TryParse(tbText, numStyle, null, out i))
{
Error.SetError(this.TextBox, string.Format("Invalid {0} Format", element.type));
}
else
{
Error.SetError(this.TextBox, null);
SetCurrentData(new ArraySegment<byte>(TypeConverter.b2h(i)));
}
}
break;
case ElementValueType.SByte:
{
sbyte i;
if (!sbyte.TryParse(tbText, numStyle, null, out i))
{
Error.SetError(this.TextBox, string.Format("Invalid {0} Format", element.type));
}
else
{
Error.SetError(this.TextBox, null);
SetCurrentData(new ArraySegment<byte>(TypeConverter.sb2h(i)));
}
}
break;
case ElementValueType.String:
SetCurrentData(new ArraySegment<byte>(TypeConverter.str2h(this.textBox.Text)));
break;
case ElementValueType.BString:
SetCurrentData(new ArraySegment<byte>(TypeConverter.bstr2h(this.textBox.Text)));
break;
case ElementValueType.IString:
SetCurrentData(new ArraySegment<byte>(TypeConverter.istr2h(this.textBox.Text)));
break;
case ElementValueType.LString:
{
// not handled
}
break;
case ElementValueType.Str4:
{
var txtbytes = new byte[] { 0x32, 0x32, 0x32, 0x32 };
System.Text.Encoding.Default.GetBytes(tbText, 0, Math.Min(4, tbText.Length), txtbytes, 0);
SetCurrentData(new ArraySegment<byte>(txtbytes));
}
break;
}
}