Ключевое значение совпадают

Ключевое значение совпадают

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

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

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
    }        
}

Откуда это "сл"? Он был объявлен локальным для метода загрузки.

LarsTech 13.06.2018 00:10

sl - это имя отсортированного списка, объявленного в загрузке страницы

MO_Tries 13.06.2018 00:12

Вы имеете в виду загрузку формы. Как я уже сказал, он объявляется локальным для этого метода. «Sl», на который вы ссылаетесь в методе щелчка, представляет собой другой список.

LarsTech 13.06.2018 00:15

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

Victor Havin 13.06.2018 00:15

@VictorHavin покажи мне, потому что я вообще не мог заставить это работать на меня.

MO_Tries 13.06.2018 00:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

   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();
        }
    }

На всякий случай: я отредактировал этот код, чтобы выбрать только уникальные ключи.

Victor Havin 13.06.2018 01:16

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

MO_Tries 13.06.2018 01:23

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

MO_Tries 13.06.2018 01:32

Я изменил код, чтобы использовать только уникальные ключи. Что вы подразумеваете под «дубликатами» в полях со списком? Если вы имеете в виду, что значения поля со списком должны быть случайными (не в том порядке, в котором они были добавлены в отсортированный список), вы можете перемешать их. В общем, рандомизации только ключей должно быть достаточно, так как это делает ключи по форме отличной от значений.

Victor Havin 13.06.2018 01:32

Я рад, если это помогло. Удачи в учебе.

Victor Havin 13.06.2018 01:34

Другие вопросы по теме