【问题标题】:label priting via button通过按钮打印标签
【发布时间】:2014-10-01 18:12:10
【问题描述】:

当我在文本框中输入数字时,我试图打印出星期几,但是一旦我单击按钮,它似乎根本没有打印在标签上,当我运行代码时,它似乎工作正常,直到我输入一个值并单击按钮,什么都没有发生。

 private void button1_Click(object sender, EventArgs e)
        {
            int dayOfWeek = Convert.ToInt32(textBox1);
            String dayName = null;
            switch (dayOfWeek)
            {
                case 1:
                    dayName = "Sunday";
                    break;
                case 2:
                    dayName = "Monday";
                    break;
                case 3:
                    dayName = "Tuesday";
                    break;
                case 4:
                    dayName = "Wednesday";
                    break;
                case 5:
                    dayName = "Thursday";
                    break;
                case 6:
                    dayName = "Friday";
                    break;
                case 7:
                    dayName = "Saturday";
                    break;



                    String stndrd = null;
                    if (dayOfWeek == 1)
                    {
                        stndrd = dayName;
                        label1.Text = (stndrd);
                    }
                    else if (dayOfWeek == 2)
                    {
                        stndrd = dayName;
                        label1.Text = (stndrd);
                    }
                    else if (dayOfWeek == 3)
                    {
                        stndrd = dayName;
                        label1.Text = (stndrd);
                    }
                    else if (dayOfWeek == 4)
                    {
                        stndrd = dayName;
                        label1.Text = (stndrd);
                    }
                    else if (dayOfWeek == 5)
                    {
                        stndrd = dayName;
                        label1.Text = (stndrd);
                    }
                    else if (dayOfWeek == 6)
                    {
                        stndrd = dayName;
                        label1.Text = (stndrd);
                    }
                    else if (dayOfWeek == 7)
                    {
                        stndrd = dayName;
                        label1.Text = (stndrd);
                    }
                    else if (dayOfWeek == null)
                    {
                        stndrd = "Mad Day!!!";
                        label1.Text = (stndrd);

【问题讨论】:

    标签: c# visual-studio


    【解决方案1】:

    这一行:

    int dayOfWeek = Convert.ToInt32(textBox1);
    

    尝试将 TextBox 转换为整数,而不是在其中键入的值 (textBox1.Text)。您应该将其更改为:

    int dayOfWeek;
    if (!int.TryParse(textBox1.Text, out dayOfWeek))
    {
        // you can remove the MessageBox if you're not interested in feedback 
        MessageBox.Show("Value entered is not a valid day number!");
        return;
    }
    
    String dayName = null;
    switch (dayOfWeek)
    {
        //...
    

    通过使用int.TryParse(),您可以防止异常并能够处理“非法值”。

    【讨论】:

      【解决方案2】:

      除了@C.Evenhuis 的回答之外,您设置标签的代码部分位于“case 7”开关的 case 语句的内部,但在中断之后。您当前的代码将无法访问此代码,因此为什么标签本身不会设置为任何内容,因为代码从未执行过。

      您需要完成 switch 语句,然后执行标签的设置。 但是所有这些代码也是多余的,因为您可以以更简单的方式完成所有操作(根据 C.Evenhuis 的建议进行扩展)

      int dayOfWeek;
      if (!int.TryParse(textBox1.Text, out dayOfWeek))
      {
        // you can remove the MessageBox if you're not interested in feedback 
        MessageBox.Show("Value entered is not a valid day number!");
        return;
      }
      
      String dayName = null;
      switch (dayOfWeek)
      {
        case 1:
          dayName = "Sunday";
          break;
        case 2:
          dayName = "Monday";
          break;
        case 3:
          dayName = "Tuesday";
          break;
        case 4:
          dayName = "Wednesday";
          break;
        case 5:
          dayName = "Thursday";
          break;
        case 6:
          dayName = "Friday";
          break;
        case 7:
          dayName = "Saturday";
          break;
        default:
          dayName = "Mad Day!!!";
          break;
        }
        // Set the label's text to what was defined above
        label1.Text = dayName;
      }
      

      【讨论】:

      • 嗨,我刚试过这个,当我点击按钮时,标签上的数据仍然没有变化
      • 这很奇怪,因为我在 private void button1_Click(object sender, EventArgs e) 事件方法中有确切的代码(只有那个代码,没有别的)。您确定按钮的 OnClick 事件已设置且 TextBox 和 Labels 可见且正确引用?
      • 啊,我刚刚意识到 TextBox 没有正确引用,谢谢您的帮助。
      猜你喜欢
      • 2015-06-06
      • 2020-03-20
      • 2020-08-24
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 2013-03-25
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多