ComboBox的复合DisplayMember

时间:2010-07-21 19:30:45

标签: c# winforms linq

我需要在组合框中显示多个数据,但我无法弄清楚如何做到这一点。

这是我正在尝试的代码:

        innerBox.DisplayMember = @"t => t.TenantName + ""\t"" + t.Property.PropertyName + ""\t"" + t.RentalUnit.UnitNumber ";

但它不起作用,但确实如此:

        innerBox.DisplayMember = @"t => t.TenantName";

如何让复合材料工作?

3 个答案:

答案 0 :(得分:2)

这是不可能的。

相反,您应该向底层对象添加属性。

答案 1 :(得分:2)

DisplayMember只能包含单个属性名称!如果需要复合输出,则应订阅Format事件并在代码中组合输出字符串。

答案 2 :(得分:0)

我想在DisplayMember中使用“[code] [text]”并通过使用linq添加属性来解决它:

var actionCodes = pps.GetAllActionCodes();
if (actionCodes != null)
{
    var actionCodesNew = (from c in actionCodes
                                select new
                                {
                                    c.Code,
                                    c.Text,
                                    CodeAndDesc = string.Format("{0} {1}", c.Code, c.Text).Trim()
                                }).ToArray();
            comboBox.Items.AddRange(actionCodesNew);
            comboBox.DisplayMember = "CodeAndDesc";
        }
}

当性能不是问题时,工作正常。 :)