使用多个字段绑定ListBox

SMU*_*hah 4 c# data-binding listbox

我正在使用VS2010进行c#.我在表格中有一些数据

分数(team1,team2,battingteam,bowlingteam,得分)我正在使用bindingSource将其与我的listBox绑定.问题是我只能在列表框的DisplayMember属性中显示一个成员(例如team1或team2).我想做点什么

team1 + " vs " + team2 + ": " + battingteam +" Score: " + score
Run Code Online (Sandbox Code Playgroud)

怎么做?

Eli*_*uta 14

首先,您可以将DisplayMember留给一个属性,让我们说:

ListBox1.DisplayMember = "team1";
Run Code Online (Sandbox Code Playgroud)

现在,在[Design]模式下转到表单,右键单击ListBox - > Properties.

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

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

private void ListBox1Format(object sender, ListControlConvertEventArgs e)
{

}
Run Code Online (Sandbox Code Playgroud)

现在写下以下几行:

private void ListBox1Format(object sender, ListControlConvertEventArgs e)
{
    // Assuming your class called Scores
    string team1 = ((Scores)e.ListItem).team1.ToString();
    string team2 = ((Scores)e.ListItem).team2.ToString();
    string battingteam = ((Scores)e.ListItem).battingteam.ToString();
    string score = ((Scores)e.ListItem).score.ToString();

    e.Value = team1 + " vs " + team2 + ": " + battingteam +" Score: " + score;
}
Run Code Online (Sandbox Code Playgroud)

而已 ;)


Amr*_*awy 1

我不知道您的数据采用哪种数据类型...但是例如,如果您从DataTable数据库返回它们,您可以创建List<string>对象并迭代数据表行,并在列表对象中创建项目,并根据需要格式化数据直接将列表对象绑定到列表框,如下所示

List<string> teams = new List<string>();
foreach (DataRow dataRow in teamsDataTable.Rows)
{
    teams.Add(dataRow["team1"].ToString() + " vs " + dataRow["team2"].ToString() + ": " + dataRow["battingteam"].ToString() + " Score: " + dataRow["score"].ToString());
}
listBox1.DataSource = teams;
Run Code Online (Sandbox Code Playgroud)