[英]Get the selected value from a combobox C#
我已经阅读了有关该主题的大量主题。 我尝试了很多变体,但是由于某种原因,我无法使它正常工作。 这是问题所在:我有一个组合框,其中装有Excel工作簿中的工作表名称。 (如果出现问题,我将包括该代码)当我尝试获取选定的文本值时,我什么也没有。 我究竟做错了什么?
/********************************************************************************
* The following code takes in an excel filename and populates a combobox based
* on the excel tab names.
********************************************************************************/
private void GetExcelSheetNames(string excelFile)
{
_Application xlApp;
Workbook xlTemplateWB;
xlApp = new ApplicationClass();
xlTemplateWB = xlApp.Workbooks.Open(Elmnt.getDBPath() + TEMPLATENAME, 0, true,
5, "", "", false, XlPlatform.xlWindows, "", true, false, 0, true, false, false);
foreach (Worksheet temp in xlTemplateWB.Worksheets)
{
cboBenchSheets.Items.Add(temp.Name);
}
xlTemplateWB.Close(true, Missing.Value, Missing.Value);
xlApp.Quit();
}
/********************************************************************************
* This returns the selected item in the cboBenchSheets combo box
********************************************************************************/
public String getSelection()
{
String selected;
selected = cboBenchSheets.Text; //Returns nothing
selected = cboBenchSheets.SelectedText; //Returns nothing
selected = cboBenchSheets.SelectedValue.ToString(); //Returns nothing
selected = cboBenchSheets.GetItemText(cboBenchSheets.SelectedIndex); //Returns -1
return selected;
}
我认为ComboBox文档的这一部分可能会有所帮助:
您可以使用SelectedText属性来检索或更改ComboBox控件中当前选择的文本。 但是,您应该注意,由于用户交互,选择可能会自动更改。 例如,如果您在按钮Click事件处理程序中检索SelectedText值,则该值将为空字符串。 这是因为当输入焦点从组合框移至按钮时,选择会自动清除。
当组合框失去焦点时,选择点将移动到文本的开头,并且所有选中的文本都将变为未选中状态。 在这种情况下,获取SelectedText属性将检索一个空字符串,并且设置SelectedText属性会将指定的值添加到文本的开头。
当组合框获得焦点时,将自动选择控件中的全文。 如果调用控件的Focus方法来设置输入焦点,则无论控件是否已经具有焦点,都将选择全文。 当用户从下拉列表中选择一个项目时,或者使用向上箭头和向下箭头键,将自动选择新项目的文本。 但是,如果尝试在SelectedIndexChanged或SelectedValueChanged事件处理程序中获取SelectedText值,则该属性将返回一个空字符串。 这是因为在发生这些事件时,先前的SelectedText值已被清除,而尚未设置新的值。 若要在SelectedIndexChanged或SelectedValueChanged事件处理程序中检索当前值,请改用SelectedItem属性。
如果用项目填充组合框并且不对其进行任何其他操作,则该组合框将没有选择项,直到用户或在代码中显式设置了选择项。 我知道这很奇怪,因为默认情况下组合框似乎选择了第一项,但这就是事实。
尝试在填充组合框的项目集合的for循环之后手动将所选项目设置为第一个项目。
foreach (Worksheet temp in xlTemplateWB.Worksheets)
{
cboBenchSheets.Items.Add(temp.Name);
}
cboBenchSheets.SelectedIndex = 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.