在选项卡控件中清除ComboBox选择

时间:2012-07-24 00:42:37

标签: c# winforms combobox tabcontrol

我正在进行c#winform开发。

我有一个tabcontrol,包含几个tabpages。一些tabpages完全填充了usercontrol,有些只是填充了combboxes / textboxes。

我为组合框设置数据源并加载好了。但是,当我将整个tabcontrol实例作为参数传递给另一个表单时,在新表单中,组合框选择被清除并设置为选择的第一个项目。

奇怪的是,对于放在用户控件中的组合框,选项不清晰并在新表单中正确显示。只有直接放在标签页中的那些不起作用。

任何建议或帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

如果正在寻找一个解决方案,以便您的ComboBoxes按照您的意愿运行,请将您的ComboBox放在UserControls上,然后将UserControls放在TabPages上。这种方法已经有效了,对吗?

答案 1 :(得分:0)

兄弟。精细? 关于组合框问题,我也一样。 我通过这种方式解决:不使用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"])));
}

答案 2 :(得分:0)

上面的实现之后,我需要编写这个方法来读写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);
}