我该如何给用户一个选择并从该选择中获取guid

时间:2013-06-07 01:53:06

标签: c# winforms linq

我必须为用户提供从项目列表中进行选择的选项,然后,等待他们选择的单个项目,我需要从该项目获取guid。这将从Sql表中的Linq查询中填充。

我从这开始:

private void PopulateGatewayList()
{
  var gateways = from gw in _entities.Gateways
                 where gw.IsActive
                 select gw;

  foreach (var gateway in gateways)
  {
    checkedListBox_Gateways.Items.Add(gateway.Name);
  }
}

但是一旦他们检查了什么,我就无法抓住guid。

给用户起名字的好方法是什么,但是给我回guid?

**答案**

使用Michael Yoon的帮助,我做了以下事情:

private void PopulateGatewayList()
{
  var gateways = from gw in _entities.Gateways
                 where gw.IsActive
                 select gw;

  foreach (var gateway in gateways)
  {
    checkedListBox_Gateways.Items.Add(new ListItem(gateway.Name, gateway.GatewayId.ToString()));
    //checkedListBox_Gateways.Items.Add(gateway.Name);
  }
}


private void checkedListBox_Gateways_SelectedIndexChanged(object sender, EventArgs e)
{
  foreach (Object selecteditem in checkedListBox_Gateways.SelectedItems)
  {
    var strItem = selecteditem as ListItem;
    Console.WriteLine("Selected: " + strItem.Value);
  }
}

1 个答案:

答案 0 :(得分:1)

您需要将对象添加到包含id和字符串的集合中。您可以使用KeyValuePair或自己创建。我将在我的例子中使用keyvaluepair。

checkedListBox_Gateways.DisplayMember = "Key";
checkedListBox_Gateways.ValueMember = "Value";
checkedListBox_Gateways.Items.Add(new KeyValuePair<string, string>(gateway.Name, gateway.Id.ToString()));

然后你可以枚举SelectedItems集合,将每个集合强制转换为keyvaluepair并从中获取值。