Network_Manager.Gadget.ControlPanel.Routes.SavedRoutes.UnloadForm.defaultIPv6GatewayMode_SelectedIndexChanged C# (CSharp) Method

defaultIPv6GatewayMode_SelectedIndexChanged() private method

private defaultIPv6GatewayMode_SelectedIndexChanged ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
return void
        private void defaultIPv6GatewayMode_SelectedIndexChanged(object sender, EventArgs e)
        {
            // manual
            if (defaultIPv6GatewayMode.SelectedIndex == 0)
            {
                defaultIPv6Gateway.Items.Clear();
                defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.Simple;
                defaultIPv6Gateway.Enabled = true;
                if (lastIPv6GatewayMode != 0)
                    defaultIPv6Gateway.Text = lastIPv6Gateway;
                lastIPv6GatewayMode = 0;
            }
            // interface default gateway
            if (defaultIPv6GatewayMode.SelectedIndex == 1)
            {
                if (lastIPv6GatewayMode == 0)
                    lastIPv6Gateway = defaultIPv6Gateway.Text;
                lastIPv6GatewayMode = 1;
                defaultIPv6Gateway.Items.Clear();
                defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.DropDownList;
                defaultIPv6Gateway.Enabled = true;
                if (defaultIPv6Interface.SelectedIndex == -1)
                {
                    return;
                }
                int ifIndex = int.Parse(Regex.Replace(defaultIPv6Interface.Text, @"^(\d+) .*$", "$1"));
                if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).Count() > 0)
                    if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Gateway.Count > 0)
                        foreach (NetworkInterface.IPGatewayAddress ip in Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Gateway)
                            defaultIPv6Gateway.Items.Add(ip.Address);
                if (Environment.OSVersion.Version.CompareTo(new Version("6.0")) > -1)
                    defaultIPv6Gateway.Items.Add("::");
                if (defaultIPv6Gateway.Items.Count > 0)
                    defaultIPv6Gateway.SelectedIndex = 0;
            }
            // no gateway
            if (defaultIPv6GatewayMode.SelectedIndex == 2)
            {
                if (lastIPv6GatewayMode == 0)
                    lastIPv6Gateway = defaultIPv6Gateway.Text;
                lastIPv6GatewayMode = 2;
                defaultIPv6Gateway.Items.Clear();
                defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.DropDownList;
                defaultIPv6Gateway.Enabled = true;
                if (defaultIPv6Interface.SelectedIndex == -1)
                    return;
                int ifIndex = int.Parse(Regex.Replace(defaultIPv6Interface.Text, @"^(\d+) .*$", "$1"));
                if (Environment.OSVersion.Version.CompareTo(new Version("6.0")) < 0)
                {
                    if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).Count() > 0)
                        if (Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Address.All.Count > 0)
                            foreach (NetworkInterface.IPHostAddress ip in Global.NetworkInterfaces.Values.Where((i) => i.Index == ifIndex).First().IPv6Address.All)
                                defaultIPv6Gateway.Items.Add(ip.Address);
                }
                else
                    defaultIPv6Gateway.Items.Add("::");
                if (defaultIPv6Gateway.Items.Count > 0)
                    defaultIPv6Gateway.SelectedIndex = 0;
            }
            // loaded route regardless
            if (defaultIPv6GatewayMode.SelectedIndex == 3)
            {
                if (lastIPv6GatewayMode == 0)
                    lastIPv6Gateway = defaultIPv6Gateway.Text;
                defaultIPv6Gateway.SelectedIndex = -1;
                defaultIPv6Gateway.Items.Clear();
                defaultIPv6Gateway.DropDownStyle = ComboBoxStyle.Simple;
                defaultIPv6Gateway.Enabled = false;
                lastIPv6GatewayMode = 3;
            }
        }