如何从组合框 C# 中的选定值获取所选索引
本文关键字:获取 索引 组合 | 更新日期: 2023-09-27 18:36:02
是否有任何内置方法可以从 ComboBox 控件 C# 中的选定值获取所选索引。如果没有,我该如何构建自己的
提前致谢
我认为您正在寻找SelectedIndex属性。
int index = comboref.SelectedIndex
当您查找特定值的索引而不是所选值的索引时,您可以这样做
int index = comboref.Items.IndexOf("string");
它会告诉你哪个索引在组合框中有"字符串"
您可以使用
combobox1.Items.IndexOf("string")
它将返回指定项集合中的索引
或者使用 combobox1FindString("string")
或 findExactString("string")
这将返回指定项的第一个匹配项。您还可以为其指定与startIndex
对应的第二个参数,以从该索引开始搜索。
我希望我回答了你的问题!
按值获取OP:我想要的是从值中获取索引,即:int seletedIndex = comboBox.getIndexFromKnownSelectedValue(value)
项并按值获取索引
您需要扫描项目,并为每个项目获取基于SelectedValue
字段的值,然后获取项目的索引。为此,可以使用此 GetItemValue 扩展方法,并通过以下方式获取项和索引:
//Load sample data
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DataSource = Enumerable.Range(1, 5)
.Select(x => new { Name = $"Product {x}", Id = x }).ToList();
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";
}
private void button1_Click(object sender, EventArgs e)
{
//Knows value
var value = 3;
//Find item based on value
var item = comboBox1.Items.Cast<Object>()
.Where(x => comboBox1.GetItemValue(x).Equals(value))
.FirstOrDefault();
//Find index
var index = comboBox1.Items.IndexOf(item);
//Set selected index
comboBox1.SelectedIndex = index;
}
否,没有任何内置方法可用于从 ComboBox 控件 C# 中的选定值获取所选索引。但是您可以创建自己的函数来获得相同的功能。
用法:
int index = CmbIdxFindByValue("YourValue", YourComboBox);
功能:
private int CmbIdxFindByValue(string text, ComboBox cmbCd)
{
int c = 0;
DataTable dtx = (DataTable)cmbCd.DataSource;
if (dtx != null)
{
foreach (DataRow dx in dtx.Rows)
{
if (dx[cmbCd.ValueMember.ToString()].ToString() == text)
return c;
c++;
}
return -1;
} else
return -1;
}