我想我正在监督一些事情。
我使用此代码动态生成一些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();
答案 0 :(得分:0)
我认为你绑定所有ComboBox相同的DataTable。 每个ComboBox必须有不同的DataTable实例。您可以通过两种方式执行此操作: - 再次从数据库中选择SELECT数据。 - 使用深层复制来创建DataTable的新实例。