我想通过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:我是在创建表单后创建此组合框的,但有问题的情况仅在于枚举。
答案 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());
}
}
}