C#Windowsform更新动态生成的组合框

时间:2014-04-18 13:57:27

标签: c# wpf combobox

我想我正在监督一些事情。

我使用此代码动态生成一些ComboBox(我对其他控件(如TextBox,Label等)执行相同的操作)

private ComboBox addControlsComboBox(string Id, string TBName, int point_X, int   point_Y, int SizeWidth, DataTable DT)
    {
        ComboBox combobox = new ComboBox();
            combobox.Text = TBName;
            combobox.Location = new Point(point_X, point_Y);
            combobox.Size = new Size(SizeWidth, 20);
            combobox.Name = Id + TBName;
            combobox.DataSource = DT;
            combobox.DisplayMember = "key";
            combobox.ValueMember = "value";
            combobox.Enabled = true;

        return combobox;
    }

当我自动想要设置所选值时,对于控件,除ComboBox外,所有值都设置正确。不是1个comboBox已更新,但所有ComboBox都已更新。

我使用嵌套字典对象来存储我需要匹配的所有值。

请参阅使用的更新代码部分

foreach (Control gb in GroupPanel.Controls)
{
    foreach (Control childc in gb.Controls)
    {
        if (DataCollection[GroupNames].ContainsKey(childc.Name))
        {
            KeyName = childc.Name;
            numberLessKeyName = SL.RemoveDigits(childc.Name);
            TextValue = DataCollection[GroupNames][KeyName];

            switch (NumberLessKeyName)
            {
                case "Name":
                    int IntTextValue = Convert.ToInt32(TextValue);
                    TextValue = IntTextValue.ToString("d2");
                    break;
            }

            switch (childc.GetType().ToString())
            {
                case "System.Windows.Forms.TextBox":
                    childc.Text = TextValue;
                    break;
                case "System.Windows.Forms.ComboBox":
                    // Not Working
                    ComboBox combobox = (ComboBox)childc;
                    combobox.SelectedValue = TextValue;

                    //Also not Working
                    // -->     childc.Text = TextValue;
                    break;
                case "System.Windows.Forms.CheckBox":
                    CheckBox chChildc = (CheckBox)childc;
                    if (TextValue == "Yes")
                    {
                        chChildc.Checked = true;
                    }
                    break;
            };
        }
    }
}

我做错了什么?

有人可以帮帮我吗?

[编辑1]

感谢Karol

我添加了以下行+接口ICloneable并且它有效。非常感谢。

DataTable DT = new DataTable();
DT = DTAttribute;
DataTable DTClone = (DataTable)DT.Clone();

对于那些搜索[C#对象克隆战争] [1] link

的人

[编辑2] 另一个想法是使用COPY(也可以)

DataTable DT = new DataTable();
DT = DTAttribute;
DataTable DTClone = DT.Copy();

1 个答案:

答案 0 :(得分:0)

我认为你绑定所有ComboBox相同的DataTable。 每个ComboBox必须有不同的DataTable实例。您可以通过两种方式执行此操作: - 再次从数据库中选择SELECT数据。 - 使用深层复制来创建DataTable的新实例。