动态添加下拉列表的选定值不起作用

本文关键字:不起作用 添加 下拉列表 动态 | 更新日期: 2023-09-27 18:33:02

我正在winforms中动态创建组合框

        ComboBox ddCntrl = new ComboBox();
        ddCntrl.Width = 100;
        ddCntrl.Name="dd_" + tpObj.RowColId;
        ddCntrl.DropDownStyle = ComboBoxStyle.DropDownList;
        Dictionary<int, string> DC = new Dictionary<int, string>();
        DC[-1] = "N/A";
        DC[0] = "Y";
        DC[1] = "N";
        ddCntrl.DataSource = new BindingSource(DC,null);
        ddCntrl.DisplayMember = "Value";
        ddCntrl.ValueMember = "Key";
         ddCntrl.SelectedIndex = ddCntrl.Items.IndexOf("N");
         TableLayoutPanel.Controls.Add(ddCntrl, 1, 1);

我尝试了几个选项来设置所选值,没有任何工作

我尝试了以下选项来设置所选值 ddCntrl.SelectedValue ="N"; ddCntrl.SelectedIndex = ddCntrl.FindStringExact("N")

动态添加下拉列表的选定值不起作用

你需要改变一些东西。首先,如果在构造函数中使用此代码,则需要将其移动到LoadShown事件。

并在将组合框添加到面板后设置索引。 ddCntrl.FindStringExact("N")应该可以正常工作:

ComboBox ddCntrl = new ComboBox();
ddCntrl.Width = 100;
ddCntrl.Name = "dd_";
ddCntrl.DropDownStyle = ComboBoxStyle.DropDownList;
Dictionary<int, string> DC = new Dictionary<int, string>();
DC[-1] = "N/A";
DC[0] = "Y";
DC[1] = "N";
ddCntrl.DataSource = new BindingSource(DC, null);
ddCntrl.DisplayMember = "Value";
ddCntrl.ValueMember = "Key";
tableLayoutPanel.Controls.Add(ddCntrl, 1, 1);
ddCntrl.SelectedIndex = ddCntrl.FindStringExact("N");

由于您要绑定到字典,因此应按如下方式设置所选项目:ddCntrl.SelectedItem = DC[1];

如果您想根据显示值进行设置(我真的不建议),您必须在 DC 中找到它,然后将其设置为 ddlCntrl