TESVSnip.UI.RecordControls.TextElement.SaveText C# (CSharp) Méthode

SaveText() protected méthode

protected SaveText ( ) : void
Résultat void
        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;
            }
        }