C#在 "foreach "循环中为来自Json的每个文本添加具有唯一值设置的文本到ListBox。

问题描述 投票:0回答:1

这是我的代码。

但我只能添加名字。

       dynamic parsedArray = JsonConvert.DeserializeObject(source);

           ListTeam100.Items.Clear();
           foreach (dynamic item in parsedArray.gameConfig.customTeam100)
           {
               ListTeam100.Items.Add(item.summonerName);
               ListTeam100.Refresh();
           }

这是我的json数据。

   "customTeam100": [
     {
       "summonerId": 111196989,
       "summonerName": "Nananaa",
     },
     {
       "summonerId": 222296989,
       "summonerName": "NananaaB",
     },
     {
       "summonerId": 125411111,
       "summonerName": "NononooBA",
     }
     ]

当我按下一个按钮时,我的ListBox(名为ListTeam100)将被更新为:

Nananaa

NananaaB

NononooBA

这很好,因为我需要看到名字。

我的问题是,我不知道如何给这个显示名称赋予自己的值,当选择时,必须在其他地方复制相应的summonerId。

c# json text listbox
1个回答
0
投票

你可以创建一个类,其中你可以有属性值和文本。

public class ListBoxItem
{
    public string Value { get; set; }
    public string Text { get; set; }
}

List<ListBoxItem> data = new List<ListBoxItem>();
data.Add(new ListBoxItem() { Value = "1", Text = "Value1" });
data.Add(new ListBoxItem() { Value = "2", Text = "Value2" });
listBox1.DisplayMember = "Text";
listBox1.DataSource = data;

你也可以像这样添加单个项目

ListBoxItem item = new ListBoxItem();
item.Text = "Value1";
item.Value = "1";
listBox1.Items.Add(item);
listBox1.DisplayMember = "Text";

0
投票

解决了。

            var status = await lcu.http_client.GetAsync(lcu.baseURL + "/lol-lobby/v2/lobby").ConfigureAwait(true);
            string source = await status.Content.ReadAsStringAsync();

            dynamic parsedArray = JsonConvert.DeserializeObject(source);

            ListTeam100.Items.Clear();
            ListTeam200.Items.Clear();

            foreach (dynamic item in parsedArray.gameConfig.customTeam100)
            {

               if (item.summonerName == "") {

                    ComboboxItem itemb = new ComboboxItem();
                    itemb.Text = item.botId;
                    itemb.Value = item.summonerId;
                    ListTeam100.Items.Add(itemb);


                }
               if (item.summonerName != "") {

                    ComboboxItem itemb = new ComboboxItem();
                    itemb.Text = item.summonerName;
                    itemb.Value = item.summonerId;
                    ListTeam100.Items.Add(itemb);

                }

                ListTeam100.Refresh();
            }
© www.soinside.com 2019 - 2024. All rights reserved.