我需要一些帮助。我有一个名为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; }
}
答案 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。)