예제 #1
0
        static internal void SetSelectedValue(System.Windows.Forms.ComboBox comboBox, SelectedItemOptions options = SelectedItemOptions.None, object valueToSelect = null, object valueForNull = null)
        {
            object selectedValue;

            if (comboBox.Items.Count > 0)
            {
                selectedValue = comboBox.SelectedValue;
                if (valueToSelect == null)
                {
                    valueToSelect = valueForNull;
                }

                switch (options)
                {
                case SelectedItemOptions.None:
                    comboBox.SelectedIndex = -1;
                    break;

                case SelectedItemOptions.First:
                    comboBox.SelectedIndex = 0;
                    break;

                case SelectedItemOptions.NoneOrFirstIfUnique:
                    if (comboBox.Items.Count == 1)
                    {
                        comboBox.SelectedIndex = 0;
                    }
                    else
                    {
                        comboBox.SelectedIndex = -1;
                    }
                    break;

                case SelectedItemOptions.Last:
                    comboBox.SelectedIndex = comboBox.Items.Count - 1;
                    break;

                case SelectedItemOptions.Current:
                    comboBox.SelectedValue = selectedValue;
                    break;

                case SelectedItemOptions.CurrentOrFirst:
                    comboBox.SelectedValue = selectedValue;
                    if (comboBox.SelectedValue == null)
                    {
                        comboBox.SelectedIndex = 0;
                    }
                    break;

                case SelectedItemOptions.CurrentOrFirstIfUnique:
                    comboBox.SelectedValue = selectedValue;
                    if (comboBox.SelectedValue == null)
                    {
                        if (comboBox.Items.Count == 1)
                        {
                            comboBox.SelectedIndex = 0;
                        }
                        else
                        {
                            comboBox.SelectedIndex = -1;
                        }
                    }
                    break;

                case SelectedItemOptions.CurrentOrLast:
                    comboBox.SelectedValue = selectedValue;
                    if (comboBox.SelectedValue == null)
                    {
                        comboBox.SelectedIndex = comboBox.Items.Count - 1;
                    }
                    break;

                case SelectedItemOptions.Value:
                    if (valueToSelect == null)
                    {
                        comboBox.SelectedIndex = -1;
                    }
                    else
                    {
                        comboBox.SelectedValue = valueToSelect;
                    }
                    break;

                case SelectedItemOptions.ValueOrFirst:
                    if (valueToSelect == null)
                    {
                        comboBox.SelectedIndex = 0;
                    }
                    else
                    {
                        comboBox.SelectedValue = valueToSelect;
                        if (comboBox.SelectedValue == null)
                        {
                            comboBox.SelectedIndex = 0;
                        }
                    }
                    break;

                case SelectedItemOptions.ValueOrFirstIfUnique:
                    if (valueToSelect == null)
                    {
                        if (comboBox.Items.Count == 1)
                        {
                            comboBox.SelectedIndex = 0;
                        }
                        else
                        {
                            comboBox.SelectedIndex = -1;
                        }
                    }
                    else
                    {
                        comboBox.SelectedValue = valueToSelect;
                        if (comboBox.SelectedValue == null)
                        {
                            if (comboBox.Items.Count == 1)
                            {
                                comboBox.SelectedIndex = 0;
                            }
                            else
                            {
                                comboBox.SelectedIndex = -1;
                            }
                        }
                    }
                    break;

                case SelectedItemOptions.ValueOrLast:
                    if (valueToSelect == null)
                    {
                        if (comboBox.SelectedValue == null)
                        {
                            comboBox.SelectedIndex = comboBox.Items.Count - 1;
                        }
                    }
                    else
                    {
                        comboBox.SelectedValue = valueToSelect;
                        if (comboBox.SelectedValue == null)
                        {
                            comboBox.SelectedIndex = comboBox.Items.Count - 1;
                        }
                    }
                    break;

                default:
                    break;
                }
            }
        }
예제 #2
0
        static internal void SetItemByDisplayValue(System.Windows.Forms.ComboBox comboBox, string displayValue, SelectedItemOptions options = SelectedItemOptions.None)
        {
            if (comboBox.Items.Count == 0)
            {
                return;
            }

            int index = comboBox.FindStringExact(displayValue);

            if (index == -1)
            {
                switch (options)
                {
                case SelectedItemOptions.None:
                    comboBox.SelectedIndex = -1;
                    break;

                case SelectedItemOptions.First:
                    comboBox.SelectedIndex = 0;
                    break;

                case SelectedItemOptions.NoneOrFirstIfUnique:
                    if (comboBox.Items.Count == 1)
                    {
                        comboBox.SelectedIndex = 0;
                    }
                    else
                    {
                        comboBox.SelectedIndex = -1;
                    }
                    break;

                case SelectedItemOptions.Last:
                    comboBox.SelectedIndex = comboBox.Items.Count - 1;
                    break;

                default:
                    break;
                }
            }
            else
            {
                comboBox.SelectedIndex = index;
            }
        }