выбрав значение не индекс из выпадающего списка C # - PullRequest
0 голосов
/ 23 ноября 2018

Простите, новичок в c # всегда был человеком PHP.Есть форма для генерации случайной строки для паролей на основе количества символов, выбранных из выпадающего списка.Возникла проблема с получением значений из выпадающего списка (приведение объекта к типу int).код:

   private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string endword = "";
        int chrnumber = Convert.ToInt16(comboBox1.SelectedValue);
        string[] Nochars = { "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "#", "z", "x", "c", "v", "b", "n", "m", "/", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "{", "}", "A", "S", "D", "F", "G", "H", "J", "K", "L", ":", "@", "~", "Z", "X", "C", "V", "B", "N", "M", "<", ">", "?", "!", "£", "$", "%", "^", "&", ".*", "(", ")", "_", "+", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=" };
        Random rndchar = new Random();
        for (int i = 0; i < chrnumber; i++)
        {
            int iSelect = rndchar.Next(0, Nochars.Length);
            string word1 = Nochars[iSelect];
            string word2 = word1;
            if (i == 0) { endword = word1; } else { endword += "." + word2; }
        }
        pwd.Text = endword;
    }  

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

попробуйте

  private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string endword = "";          
        int chrnumber = int.Parse(this.comboBox1.GetItemText(this.comboBox1.SelectedItem).ToString());// change line
        string[] Nochars = { "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "#", "z", "x", "c", "v", "b", "n", "m", "/", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "{", "}", "A", "S", "D", "F", "G", "H", "J", "K", "L", ":", "@", "~", "Z", "X", "C", "V", "B", "N", "M", "<", ">", "?", "!", "£", "$", "%", "^", "&", ".*", "(", ")", "_", "+", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=" };
        Random rndchar = new Random();
        for (int i = 0; i < chrnumber; i++)
        {

            int iSelect = rndchar.Next(0, Nochars.Length);
            string word1 = Nochars[iSelect];
            string word2 = word1;
            if (i == 0) {
                endword = word1;
            }
            else {
                endword += "." + word2;
            }
        }
        pwd.Text = endword;
    }
0 голосов
/ 23 ноября 2018
//On form load
public Form1(){
         List<Values> reasons = new List<Values> { 
            new Values("0", 0), 
            new Values("1", 1),
            new Values("2", 2), 
            new Values("3", 3), 
            new Values("4", 4), 
            new Values("5", 5) };
comboBox1.DataSource = reasons;
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
reason = Convert.ToInt32(comboBox1.SelectedValue);
}

здесь значение по умолчанию равно 0, поэтому ваша ошибка не возникнет ни в одной точке.Я надеюсь, что ваше значение по умолчанию для источника данных combox имеет значение ", которое вызывает эту ошибку.

или убедитесь, что часть значения не является алфавитом / другими символами вместо цифр в вашем источнике данных.

...