从下拉列表中选择值而不是索引

时间:2018-11-23 10:49:12

标签: c# dropdownbox selectedvalue

原谅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 :(得分:0)

//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数据源默认值为",这会导致此错误。

或确保值部分不是字母/其他字符,而不是数据源中的数字。

答案 1 :(得分:0)

尝试

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