значение ключа соответствует - PullRequest
0 голосов
/ 13 июня 2018

enter image description here

выше, как выглядит мой графический интерфейс.При загрузке формы отсортированный список отображает три случайно выбранных ключа на ярлыках.Затем пользователь выбирает соответствующее значение, чтобы сопоставить его с клавишей.

Это то, с чем я борюсь!ниже, как далеко я продвинулся.пожалуйста, помогите !!

private void Form1_Load(object sender, EventArgs e)
{
    //create the sorted list and add items
    SortedList<string,string> sl = new SortedList<string,string>();
    sl.Add("PicknPay", "jam");
    sl.Add("Spar", "bread");
    sl.Add("Checkers", "rice");
    sl.Add("Shoprite", "potato");
    sl.Add("Cambridge", "spinash");

    //declare random variable
    var rnd = new Random();
    var shuffledKeys = sl.Keys.OrderBy(key => rnd.Next()).ToList();

    lbl1.Text = shuffledKeys[0];
    lbl2.Text = shuffledKeys[1];
    lbl3.Text = shuffledKeys[2];
}

Вот как мое нынешнее мышление помогает мне сопоставить вывод метки с выбором комбинированного списка, чтобы подтвердить, что на самом деле это действительная пара значений ключа

private void btnmatch_Click(object sender, EventArgs e)
{
    int count = 0;
    //match 
    if (sl.keys.Containskey(shuffledKeys[0]) || sl.value.Containsvalue(cb1.SelectedValue))
    {
        count++; //score                 
    }
    else
    {
        //Do nothing
    }        
}

1 Ответ

0 голосов
/ 13 июня 2018

Как насчет кода, приведенного ниже?Не ясно, должны ли ключи в метках быть уникальными.Если это так, вы должны добавить еще один цикл для выбора уникального случайного числа.

   public partial class Form1 : Form
    {
        private Label[] labels;
        private ComboBox[] combos;
        private Random r = new Random();
        SortedList<string, string> sl = new SortedList<string, string>();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            labels = new Label[]{ label1, label2, label3 };
            combos = new ComboBox[]{ comboBox1, comboBox2, comboBox3 };
            sl.Add("Key1", "Value1");
            sl.Add("Key2", "Value2");
            sl.Add("Key3", "Value3");
            sl.Add("Key4", "Value4");
            sl.Add("Key5", "Value5");

            HashSet<int> used = new HashSet<int>();

            foreach (Label l in labels)
            {
                int n = r.Next(0, sl.Count);
                while(used.Contains(n))
                   n = r.Next(0, sl.Count);
                used.Add(n);
                l.Text = sl.ElementAt(n).Key;
            }
            foreach(ComboBox combo in combos)
            {
                foreach(string s in sl.Values)
                {
                    combo.Items.Add(s);
                }
            }

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int nCorrect = 0;

            for(int n = 0; n < labels.Length; n++)
            {
                if(combos[n].Text == sl[labels[n].Text])
                {
                    nCorrect++;
                }

            }
            labelScore.Text = nCorrect.ToString();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...