我正在构建一个字符串,代码看起来像
String status = "The status of my combobox is " + comboBoxTest.SelectedText
我在 VS2010 中使用 WinForm
结果看起来像
“我的组合框的状态是”
从文档中:
您可以使用 SelectedText 属性来检索或更改 ComboBox 控件中当前选定的文本。但是,您应该知道,由于用户交互,选择可能会自动更改。例如,如果您在按钮 Click 事件处理程序中检索 SelectedText 值,则该值将是一个空字符串。这是因为当输入焦点从组合框移动到按钮时,选择会自动清除。
当组合框失去焦点时,选择点会移动到文本的开头,并且任何选定的文本都将变为未选中状态。在这种情况下,获取 SelectedText 属性会检索一个空字符串,并设置 SelectedText 属性会将指定的值添加到文本的开头。
我在 5 分钟前遇到了这个问题。
我认为一个解决方案(使用visual studio 2005)是:
myString = comboBoxTest.GetItemText(comboBoxTest.SelectedItem);
如果我错了,请原谅我。
我认为你不需要SelectedText
,但你可能需要
String status = "The status of my combobox is " + comboBoxTest.Text;
尝试这个:
String status = "The status of my combobox is " + comboBoxTest.text;
要获得选定的项目,您必须使用组合框的 SELECTEDITEM 属性。由于这是一个对象,如果你想将它分配给一个字符串,你必须使用 ToString() 方法将它转换为字符串:
string myItem = comboBox1.SelectedItem.ToString(); //this does the trick
假设您想更改例如标签的文本,这就是我将如何解决这个问题
private void comboBoxtest_SelectedIndexChanged(object sender, EventArgs e)
{
var combotext = comboBoxtest.Text;
var status = "The status of my combo box is" + combotext;
label1.Text = status;
}
如果将 Combobox 绑定到 KeyValuePair 之类的东西,构造函数中的属性如下...:
DataSource = dataSource,
DisplayMember = "Value",
ValueMember = "Key"
dataSource
KeyValuePair 类型也是如此...
你最终不得不这样做......
string v = ((KeyValuePair)((ComboBox)c).SelectedItem).Value;
(我有一个动态表单 -c
类型在哪里Control
- 所以必须将它转换为 ComboBox)
如果您只想知道ComboBox
带有可编辑文本框(或ComboBoxStyle.DropDown
样式)的文本,可以使用:
string str = comboBox.SelectedItem != null ?
comboBox.GetItemText(comboBox.SelectedItem) : comboBox.Text;
或试试这个代码
String status = "The status of my combobox is " + comboBoxTest.SelectedItem.ToString();