无法在绑定枚举的组合框中设置"SelectedValue"



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

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

            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:我在创建表单后正在创建此组合框,有问题的情况仅适用于枚举。

根据此堆栈溢出问题,您只能在分配数据绑定后设置所选项目。如果在发生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());
        }
    }
}

相关内容

  • 没有找到相关文章