[英]ComboBox selection cleared in a tab control
我正在做c#winform开发。
我有一个包含几个选项卡页的选项卡控件。 有些选项卡页面完全由usercontrol填充,而有些则仅由组合框/文本框填充。
我为组合框设置了数据源,并且加载成功。 但是,当我将整个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表现理想,请将ComboBox放在UserControls上,然后将UserControls放在TabPages上。 这种方法已经奏效了,对吗?
完成上述实现后,我需要为读写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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.