我正在做 c# winform 开发。
我有一个包含多个标签页的标签控件。一些标签页完全填充了用户控件,一些只是填充了组合框/文本框。
我为组合框设置数据源,它加载正常。但是,当我将整个 tabcontrol 实例作为参数传递给另一个表单时,在新表单中,组合框选择被清除并设置为第一个被选中的项目。
奇怪的是,对于放在用户控件中的组合框,选择不清晰,并且在新表单中正确显示。只有那些直接放在标签页中的东西不起作用。
任何建议或帮助将不胜感激。
我正在做 c# winform 开发。
我有一个包含多个标签页的标签控件。一些标签页完全填充了用户控件,一些只是填充了组合框/文本框。
我为组合框设置数据源,它加载正常。但是,当我将整个 tabcontrol 实例作为参数传递给另一个表单时,在新表单中,组合框选择被清除并设置为第一个被选中的项目。
奇怪的是,对于放在用户控件中的组合框,选择不清晰,并且在新表单中正确显示。只有那些直接放在标签页中的东西不起作用。
任何建议或帮助将不胜感激。
兄弟。美好的?关于组合框问题,我也有同样的问题。我通过这种方式解决:不要使用DataSource
之前(有问题):
comboBox.DisplayMember = "NmConta";
comboBox.ValueMember = "CodConta";
comboBox.DataSource = dataTable;
之后(没问题):
comboBox.DisplayMember = "Value";
comboBox.ValueMember = "Key";
foreach (DataRow row in dataTable.Rows)
{
comboBox.Items.Add(new KeyValuePair<int, string>(Convert.ToInt32(row["CodConta"]), Convert.ToString(row["NmConta"])));
}
在上面的实现之后,我需要编写这个方法来读写comboBox.SelectedValue:
// Set ComboBox.SelectedValue
private void ComboBoxSelectedValue(ComboBox comboBox, object valueToSelect)
{
for (int i = 0; i < comboBox.Items.Count; i++)
{
object item = comboBox.Items[i];
object value = item.GetType().GetProperty("Key").GetValue(item, null);
if (Convert.ToString(value) == Convert.ToString(valueToSelect))
{
comboBox.SelectedIndex = i;
return;
}
}
comboBox.SelectedIndex = -1;
}
// Get ComboBox.SelectedValue
private object ComboBoxSelectedValue(ComboBox comboBox)
{
if (comboBox.SelectedIndex < 0) { return null; }
object item = comboBox.Items[comboBox.SelectedIndex];
return item.GetType().GetProperty("Key").GetValue(item, null);
}
// Get ComboBox.SelectedText
private object ComboBoxSelectedText(ComboBox comboBox)
{
if (comboBox.SelectedIndex < 0) { return null; }
object item = comboBox.Items[comboBox.SelectedIndex];
return item.GetType().GetProperty("Value").GetValue(item, null);
}