如何从 C# windows Form Application 中的 ComboBox 获取 Id

Posted

技术标签:

【中文标题】如何从 C# windows Form Application 中的 ComboBox 获取 Id【英文标题】:How to get Id from ComboBox in C# windows Form Application 【发布时间】:2016-11-21 19:54:09 【问题描述】:

我有一个ComboBox 这样填写:

List<Category> CategList = new Category().getAllCategory();

foreach (Category cat in CategList)
            
    ComboForCategory.Items.Add(cat.CategoryName);

ComboBox 成功显示所有CategoryName 详细信息...现在我需要从选定的Name 中获取CategoryID...

然后我曾经像这样得到CategoryID

Item ob = new Item();
ob.category.CategoryId = ComboForCategory.SelectedValue.ToString();

但它显示错误。为什么?如何从选定的Name 中获取CategoryID

【问题讨论】:

【参考方案1】:

您需要在后面的代码中指定 ValueMember 属性。然后,您可以使用 DisplayMember 指定要显示的对象的哪个属性。

List<Category> CategList = new Category().getAllCategory();

ComboForCategory.DataSource = CategList;
ComboForCategory.DisplayMember = "CategoryName";
ComboForCategory.ValueMember = "CategoryId";

那么当你想要获取 SelectedValue 时,你可以这样调用它:

ob.category.CategoryId = Convert.ToInt32(ComboForCategory.SelectedValue);

(不需要使用 ToString())。

【讨论】:

您说这是针对 Windows 窗体应用程序的,但这个答案是针对 Web 窗体应用程序的。请指定哪个。 我在 Windows 窗体应用程序中对此进行了测试,它运行良好。如果您有错误,则有其他原因导致错误。您可以发布您遇到的错误的屏幕截图吗? 我刚刚注意到您在“c# 2.0”下标记了您的问题,这个答案是使用 .Net Framework 4 完成的。 它是使用框架 4.5 完成的,所以这可能是它不适合你的原因。【参考方案2】:

使用隐藏 ID 从数据库中设置 comboBox 中的值

var collection = dbContext.Category;

comboBox1.DisplayMember = "Column-Name";
comboBox1.ValueMember = "ID";
comboBox1.DataSource = collection;

要在comboBox 中设置 id 值,只需编写

comboBox.SelectedValue = "Id";

【讨论】:

【参考方案3】:

复制粘贴

model.CategoryID = Guid.Parse(comboBox1.SelectedValue.ToString());

【讨论】:

以上是关于如何从 C# windows Form Application 中的 ComboBox 获取 Id的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows Form C# 中使用 Binance API [关闭]

在C#中怎样在两个Form之间传递数据(Winfrom)?

c# windows form,部署前的下一步是啥?

如何使用过滤器从 C# 中的访问中选择特定字段

用VS2010编的C# windows应用程序,控件的配置代码在哪里?

我可以从 c# 表单运行 windows 命令吗? [复制]