C#WinForms以新的形式选择ComboBox项

时间:2013-12-23 11:35:44

标签: c# winforms combobox

我需要一些帮助。我有一个名为Form1的主要表单。 当我点击按钮btn1时,会出现一个名为Form2的新表单。 在Form2中,我有几个TextBox和一个名为cb2的ComboBox。

对于TextBoxes,我以这种方式设置显示的文本:

//on Form1 I have this code
private void btn1_Click(object sender, EventArgs e)
{
    Form2 form2= new Form2();
    string a = "Text to be displayed in a textBox";
    form2.txtMyTextBox = a;

    form2.Owner = this;
    form2.ShowDialog(this);
}

//on Form2 I set Public String
public string txtMyTextBox
{
    get { return txt1.Text; }
    set { txt1.Text = value; }
}

如何在ComboBox下拉菜单中设置所选项目?我尝试使用TextBox中使用的相同方式,但它不起作用。

//Tried for combobox 
public string myCb2
{
    get { return cb2.Text; }
    set { cb2.SelectedValue = value; }
}

4 个答案:

答案 0 :(得分:3)

您可以在表单的属性中公开ComboBox的SelectedIndex属性:

public int MySelectedIndex // user a more appropriate name
{
    get { return cb2.SelectedIndex; }
    set { cb2.SelectedIndex = value; }
}

这只给你索引。如果您需要所选项目的文本,则需要使用SelectedItem

public string MySelectedItem // user a more appropriate name
{
    get { return cb2.SelectedItem.ToString(); }
}

我使用了ToString()方法,因为SelectedItem的类型是对象。根据您在ComboBox的Items属性中填充的对象,底层类型可以是任何类型。如果你把字符串放在里面,你会得到字符串,然后你就可以使用一个演员:

public string MySelectedItem // user a more appropriate name
{
    get { return (string)cb2.SelectedItem; }
    set { return cb2.SelectedItem = value; }
}

答案 1 :(得分:2)

尝试使用SelectedIndex并将其分配到value集合中Items的索引:

set { cb2.SelectedIndex = cb2.Items.IndexOf(value); }

答案 2 :(得分:0)

将数据传递给表单的一种方法最初,是创建一个构造函数,将这些值设置为控件。

public Form2(string initText, object selectedValue) {
    this.txtMyTextBox.Text = initText;
    this.cb2.SelectedValue = selectedValue;
}

另一种方法是暴露/创建适用于Controls的公共属性,如果要发送的值更多..

答案 3 :(得分:0)

根据我的理解,更好的方法是在Form2的构造函数中传递值,并在From2_Load事件中设置控件的值,对于组合框设置它的项目,而不是设置选定的值(确保itemsouce包含选定的值,并且两者都具有相同的intance。)