我想通过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());
}
}
}