繁体   English   中英

在选项卡控件中清除了组合框选择

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM