无法在与枚举绑定的组合框中设置“ SelectedValue”

时间:2019-07-20 12:24:52

标签: c# asp.net windows winforms combobox

我想通过SelectedItem / SelectedText / SelectedValue(从任何一种方式)在组合框中设置默认值(而不是第一个)。

我试图通过许多不同的方式来解决它。就像我将枚举设置为键值对一样。尝试使用“ SelectedIndex”。调试时显示“ -1”。在其他“ selected *”选项中,值是“ null”。我不知道发生了什么。我已附上代码。请看看并帮助我解决该问题。谢谢。

            ComboBox cmbxType= new ComboBox();
            cmbxType.FormattingEnabled = true;
            cmbxType.DropDownStyle = ComboBoxStyle.DropDownList;
            cmbxType.Margin = new Padding(3, 6, 3, 3);
            cmbxType.Name = "cmbxType";
            cmbxType.Size = new System.Drawing.Size(200, 28);
            cmbxType.TabIndex = 1;
            cmbxType.DataSource = Enum.GetValues(typeof(StateType));
            cmbxType.SelectedIndexChanged += new System.EventHandler(cmbxType_SelectedIndexChanged);
            cmbxType.ValueMember = (workflowRows).ToString();
            cmbxType.SelectedValue = 2

PS:我是在创建表单后创建此组合框的,但有问题的情况仅在于枚举。

1 个答案:

答案 0 :(得分:0)

根据this Stack Overflow question,您只能在分配数据绑定后设置所选项目。如果您在OnLoad事件发生时选择该项目,则它应该可以工作。下面是一个有效的示例。

using System;
using System.Windows.Forms;

namespace WindowsFormsApp
{
    static class Program
    {
        internal enum StateType
        {
            State1, 
            State2, 
            State3
        }

        internal class DemoForm : Form
        {
            ComboBox cmbxType = new ComboBox();

            public DemoForm()
            {
                cmbxType.DataSource = Enum.GetValues(typeof(StateType));
                Controls.Add(cmbxType);
            }

            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);
                cmbxType.SelectedItem = StateType.State3;
            }
        }

        [STAThread]
        static void Main()
        {
            Application.Run(new DemoForm());
        }
    }
}