c# - 如何为自定义类创建自定义扩展方法?

标签 c# combobox extension-methods

我找到了这个类,并使用它为我的组合框生成项目(作为数据源):

 public class ComboBoxItem
{
    public string Text { get; set; }
    public object Value { get; set; }

    public override string ToString()
    {
        return Text;
    }
}

问题是每当我需要访问 ComboBox 的选定值时,它总是返回 Text,尽管 value 和当我解析我的应用程序时,Text 都是可见的,但我无法访问Value。看图:

ToString()
还有这张照片:
Value not accessible

我想我需要一个 ToInt() 函数来将我的类的值作为 int 返回。我怎样才能实现它?

最佳答案

您需要将 SelectedItem 转换为 ComboBoxItem,然后访问它的 Value 属性:

var i = ((ComboBoxItem)sTD_PROVINCEComboBox.SelectedItem).Value;

这样,i 将包含 Value,因此在 foreach 中,您可以简单地执行以下操作:

foreach(var item in UE2.Cities.Where(x => x.CITY_PROVINCE_ID == i)

更新:

请注意,ComboBoxItemValue 属性是 object 类型(我假设它是 int)。如果是这种情况,上面的 foreach 部分将无法编译(不允许将 int 与 object 进行比较)。假设 CITY_PROVINCE_ID 的类型为 int,并且 i 存储装箱 int,您需要将 i 拆箱回 int :

foreach(var item in UE2.Cities.Where(x => x.CITY_PROVINCE_ID == (int)i)

关于c# - 如何为自定义类创建自定义扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20882616/

相关文章:

c# - 无法读取 iTunes XML 提要

c# - MailMessage Bcc AddRange 的扩展方法

wpf - 下拉菜单中箭头导航的可编辑组合框行为

c# - 以编程方式将列表存储到我的组合框的项目集合中

javascript - 在 ExtJs 3.3 组合框中显示多个字段

c# - Windows Phone 8 模拟器未启动。错误代码 0x80131500

c# - 为什么第二个 writeline 在使用 lambda 时打印出 12?

arrays - 如何使用关联类型和数组扩展协议(protocol)

swift - 我如何添加字符串扩展以将字符串转换为 utf8

ios - 要从主应用程序发送到键盘扩展的图像