列表框中的Foreach项

时间:2018-09-18 16:38:39

标签: c# foreach

我有一个列表框Listbox1,其中显示了ZoneID的列表

我想为每个ZoneID设置一个变量并执行一个存储过程。我已经通过显示每个ZoneID的消息框来进行测试,但是我在消息框中只能看到的是“ ZoneID”

private void Btn_AddModel_Click(object sender, EventArgs e) {
  using(SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MfgDataCollector"].ToString())) {
    List <Zone> Zonelist = conn.Query<Zone>("GetZone", commandType: CommandType.StoredProcedure).ToList<Zone>();

    listBox1.DataSource = Zonelist;
    listBox1.ValueMember = "ZoneID";
  }

  DisplayMessageBoxForEach();
}


private void DisplayMessageBoxForEach() {
  foreach(object ValueMember in listBox1.Items) {
    MessageBox.Show(listBox1.ValueMember.ToString());
  }
}

我猜我缺少一些简单的语法,但这对我来说却是新的。我也可以不使用列表框而使用DapperList,但同样,这对我来说是新的。

谢谢大家!

3 个答案:

答案 0 :(得分:0)

ValueMember只是一个属性,它定义了数据源中正在使用的属性。

您的循环应如下所示:

foreach(Zone zone in (List<Zone>)listBox1.DataSource) {
  MessageBox.Show(zone.ToString());
}

ToString()替换为要从Zone类显示的任何属性。

答案 1 :(得分:0)

在foreach循环中进行更改:

Zone objZone = (Zone) ValueMember:

MessageBox.Show(objZone.ZoneID);

答案 2 :(得分:0)

我最终放弃了dapper,将应用程序中的SQL命令写到一个列表中,发现完成这项工作要容易得多。现在工作。谢谢 !

grabbable