【问题标题】:How to append some text to DisplayMember of a Control如何将一些文本附加到控件的 DisplayMember
【发布时间】:2025-12-07 11:00:02
【问题描述】:

如何在DisplayMember 末尾添加一些文本或其他字段而不更改DataSource

this.lstSubjects.DataSource = this.subjectBindingSource;
this.lstSubjects.DisplayMember = "Caption";
this.lstSubjects.FormattingEnabled = true;
this.lstSubjects.Name = "lstSubjects";
this.lstSubjects.ValueMember = "SubjectCode";
this.lstSubjects.SelectedIndexChanged += new System.EventHandler(this.lstSubjects_SelectedIndexChanged);

例如,我想在每个列表框行中同时显示 CaptionSubjectCode 的 DataTable 字段,但是每行的值将是 SubjectCode

我想要这样的东西:

ListBox 的 DisplayMember = "技术 (AD)"

ListBox 的值 = "AD"

提前致谢,

【问题讨论】:

  • 你想创建一个新成员来显示你想要的文本
  • 我想将两个数据表的字段显示为 DisplayMember 的一个成员;有可能吗?
  • 您可以随时创建它们的组合列表...更好的是,在进行查询时您可以创建一个字段作为组合
  • 如果您的意思是我应该更改查询,我已经多次使用该查询,所以也许我必须编写一个新查询。但我正在寻找更好的方法,如果它是更好的方法
  • 我的回答对你有帮助吗?

标签: c# ado.net listbox datasource bindingsource


【解决方案1】:

首先,您可以为 DisplayMember 保留一个属性,例如:

lstSubjects.DisplayMember = "lastname";

现在,在 [设计] 模式下转到您的表单,右键单击列表框 -> 属性。

在属性窗口的顶部,点击事件(闪电图标),

在下面的事件列表中(在 Property Changed 下)查找 Format 并在其中键入一些事件名称,例如: lstSubjectsFormat ,然后按 Enter。你会看到这个:

private void lstSubjectsFormat(object sender, ListControlConvertEventArgs e)
{

}

现在在里面写下以下几行:

private void lstSubjectsFormat(object sender, ListControlConvertEventArgs e)
{
    // Assuming your class called Employee , and Firstname & Lastname are the fields
    string lastname = ((Employee)e.ListItem).Firstname;
    string firstname = ((Employee)e.ListItem).Lastname;
    e.Value = lastname + " " + firstname;
}

就是这样;)

【讨论】:

  • 正是我需要的。必须设置 FormattingEnabled = true 才能工作。
【解决方案2】:

我为你准备好了。据我了解,您正在执行 sql 查询来获取数据。 使用this 使您的查询包含您需要的字符串。 例如,如果您的表包含两个 varchar 字段,您可以这样做

SELECT column1 +'(' + column2 + ')' FROM myTable;

这是最好的方法,也是正确的方法,我花了一些时间才找到它......

【讨论】:

    最近更新 更多