将组合框选择传递给另一个获胜形式的其他组合框c#

时间:2015-05-16 12:48:01

标签: c# winforms combobox

我有2个窗口形式,它们都有相同的组合框,并且具有相同的可能选择。我想通过按钮点击将选择从一个组合框传递到另一个组合框。 我正在成功地将值传递给文本框但是当涉及到组合框时,我无法弄清楚它。

以下是代码示例:

表格2定义

private double passTxt;

private string passCB;

public double passTxtValue
        {
            get { return passTxt; }
            set { passTxt = value; }
        }
public string passCbValue
        {
            get { return passCB; }
            set { passCB = value; }
        }

表格1发送

 private void btnPassValues_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2(); 

            form2.passTxtValue = variable1Form1;

            form2.passCbValue = CBForm1.SelectedText;
            form2.Show();
        }

Form2 - 加载(打开)

private void form2_Load(object sender, EventArgs e)
        {
            variable1Form2.Text = passTxt.ToString(); 
            CBForm2.SelectedText = passCB;
        }

当我使用调试器检查时,错误在步骤2中.Form1为form2.passCbValue = CBValueForm1.SelectedText;发送空字符串("")

当我尝试使用索引或值时,它需要强制转换,但是有一个错误,它不能被转换。有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:1)

SelectedText表示具有DropDown样式的ComboBox的TextBox区域中的当前所选文本(蓝色突出显示的文本)。每次组合框失去焦点时,此选择都会被清除(当您处于按钮点击事件时,焦点位于按钮上)。

解决方法是在form1上传递组合的SelectedIndex(如果两个组合以相同的顺序填充相同的项目)

private void btnPassValues_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2(); 
    form2.passTxtValue = variable1Form1;
    form2.passCbIndex = CBValueForm1.SelectedIndex;
    form2.Show();
}

在form2中,更改属性以获取整数而不是字符串....

private int passCBIndex;
public int passCbIndex
{
    get { return passCBIndex; }
    set { passCBIndex = value; }
}

并在您的form2加载事件

private void form2_Load(object sender, EventArgs e)
{
    ....
    CBValueForm2.SelectedIndex = passCBIndex;
}

答案 1 :(得分:0)

将其更改为:

form2.passCbValue = CBValueForm1.SelectedItem.ToString();