C#如何匹配两个列表框中的项目

Posted

技术标签:

【中文标题】C#如何匹配两个列表框中的项目【英文标题】:C# How to match items from two list boxes 【发布时间】:2021-12-21 11:24:34 【问题描述】:

我正在尝试使用两个列表框创建匹配列游戏。例如,当用户单击第一个列表框中的数字 100 时,他们需要单击第二个列表框中与该数字匹配的动物。一旦所有列都匹配,我想向用户显示一条消息,告诉他们他们有多少答案是正确的。我也知道使用字典是一种更好的方法,但是我不确定如何用我的列表框正确实现它并随机化它

*我面临的问题

我的列表框正在添加重复值

*我需要什么帮助

为动物分配编号 通过单击两个列表框来匹配项目 在末尾显示一条消息,指出正确答案的数量

代码:

public partial class game : Form

    
    public static List<string> animals = new List<string>  "cat", "dog", "bird", "frog", "snake", "duck", "tiger" ;
    public static List<string> values = new List<string>  "400", "200", "300", "800", "100", "500", "600";

    public game()
    
        InitializeComponent();
    

    private void button1_Click(object sender, EventArgs e)
    
        listBox1.Items.Clear();
        listBox2.Items.Clear();

        //random class created
        Random random = new Random();
      
        for (var i = 0; i < 4; i++)
        
            int index = random.Next(values.Count);
          
            //adds numbers to listbox
            listBox1.Items.Add(values[index]);                                
        
        for (var i = 0; i < 7; i++)
                 
            int index = random.Next(animals.Count);

            //adds animals to listbox          
            listBox2.Items.Add(animals[index]);
        
    
    

【问题讨论】:

你的意思是要随机连接两个大小相同的不同列表? 【参考方案1】:
private static Dictionary<string, string> test = new Dictionary<string, string>() 
      
        "100",
        "dog"
      ,
      
        "200",
        "cat"
      ,
      
        "300",
        "bird"
      ,
      
        "400",
        "parrot"
      ,
    ;

    public Form1() 
      InitializeComponent();
    
    
    private void Form1_Load(object sender, EventArgs e) 
      foreach(KeyValuePair < string, string > kvp in test) 
        listBox1.Items.Add(kvp.Key);
        listBox2.Items.Add(kvp.Value);
      
    
    
    private void listBox2_SelectedValueChanged(object sender, EventArgs e) 
      if (test[listBox1.Text] != listBox2.Text) 
        MessageBox.Show("Incorrect");
      
      else 
        MessageBox.Show("Correct");
      
    
  

这里的额外好处是我们使用字典来填充列表框,因此我们不必在 UI 中管理集合。另外不要忘记在 listbox2

上为 SelectedValueChanged 添加事件监听器

【讨论】:

以上是关于C#如何匹配两个列表框中的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何从两个列表框保存文件c#

foreach 某些项目在列表框中 - Winform,C#

修改 MS Access 列表框中的项目列表

如何禁用选中列表框中的复选框?

如何将文本框文本拆分为列表框 C#

如何获取列表框中的项目数