TESVSnip.UI.RecordControls.OptionsElement.cboOptions_SelectedIndexChanged C# (CSharp) Method

cboOptions_SelectedIndexChanged() private method

private cboOptions_SelectedIndexChanged ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        private void cboOptions_SelectedIndexChanged(object sender, EventArgs e)
        {
            var data = GetCurrentData();
            int oldIndex = TypeConverter.h2si(data);
            switch (element.type)
            {
                case ElementValueType.SByte:
                case ElementValueType.Byte:
                    oldIndex = (int)TypeConverter.h2sb(data);
                    break;
                case ElementValueType.Short:
                case ElementValueType.UShort:
                    oldIndex = (int)TypeConverter.h2ss(data);
                    break;
                case ElementValueType.Int:
                case ElementValueType.UInt:
                    oldIndex = TypeConverter.h2si(data);
                    break;
                default:
                    oldIndex = -1;
                    break;
            }

            var cbi = this.cboOptions.SelectedItem as comboBoxItem;
            if (cbi != null)
            {
                int newIndex = cbi.value;
                if (oldIndex != newIndex && newIndex != -1)
                {
                    oldIndex = newIndex;
                    switch (element.type)
                    {
                        case ElementValueType.SByte:
                        case ElementValueType.Byte:
                            SetCurrentData(new ArraySegment<byte>(TypeConverter.sb2h((sbyte)newIndex)));
                            break;

                        case ElementValueType.Short:
                        case ElementValueType.UShort:
                            SetCurrentData(new ArraySegment<byte>(TypeConverter.ss2h((short)newIndex)));
                            break;

                        case ElementValueType.Int:
                        case ElementValueType.UInt:
                            SetCurrentData(new ArraySegment<byte>(TypeConverter.si2h(newIndex)));
                            break;
                    }

                    Changed = true;
                    UpdateText();
                }
            }
        }