System.InvalidCastException:'无法转换类型为'System.Windows.Forms.TextBox'的对象以类型为'System.IConvertible

时间:2018-07-05 18:41:36

标签: c#

试图在C#上创建点钞机,并得到一个称为costofcredit的整数错误,我已经将此声明为int,然后单击了一个按钮,它将在其上加1p,并且在该按钮内有代码的
costofcredit = Convert.ToInt32(textCPC); 这是我收到以下消息的地方,是我的整个代码

if (textCPC.Text != "0") 
            {
                onepence = onepence + 1
                label1p.Text = onepence.ToString(); 
                totalpence = totalpence + 1; 
                textTPV.Text = totalpence.ToString(); 
                totalpounds = totalpence / 100; 
                textTPVal.Text = totalpounds.ToString("n2"); 
                costofcredit = Convert.ToInt32(textCPC); 
                amountofcredits = Convert.ToInt32(totalpence) / costofcredit; 
                textAPC.Text = amountofcredits.ToString(); 
            else 
            {
                MessageBox.Show("Please enter the cost per credit!"); 
            }

5 个答案:

答案 0 :(得分:1)

因为textCPC TextBox类未实现System.IConvertible接口。

使用Convert.ToInt32时,该对象需要实现System.IConvertible

Convert.ToInt32(textCPC.Text); 

代替

Convert.ToInt32(textCPC);

答案 1 :(得分:0)

您正在使用textCPC,我相信这是一个TextBox。您需要TextBox的值,因此应使用textCPC.Text

答案 2 :(得分:0)

您正在尝试将textCPC本身(它是一个TextBox控件)转换为整数值,而您应该使用textCPC.Text将其转换为整数值。因此,只需更改

Convert.ToInt32(textCPC); 

收件人

Convert.ToInt32(textCPC.Text); 

尝试使用[Int32.TryParse] 1,以便在您输入错误的数据时不会出现异常。或者只是在try/catch语句中使用它。

答案 3 :(得分:0)

正如我在评论中已经说过的那样,您需要像这样.Text转换textCPC的Convert.ToInt32(textCPC.Text)属性,如果textbox textCPC的Value是整数值,则可以看到您如何不使用try catch进行异常处理,以防用户输入非整数的情况下使用System.Int32.TryParse

//Declare an out parameter of type int
int outIntCheck = 0;

//Check to see if you can successfully parse an integer value
if(System.Int32.TryParse(textCPC.Text, out outIntCheck)
   costofcredit = outIntCheck;
else
   //Show incorrect integer format error 

答案 4 :(得分:0)

private void saveButton_Click(object sender, EventArgs e)

{

        TaskEmployee taskEmployee = new TaskEmployee();
        TaskEmployeeBLL taskEmployeeBLL = new TaskEmployeeBLL();
        Task1 task1 = new Task1();

        int employeeid = Convert.ToInt32(employeeNameShowComboBox.SelectedValue);

        bool save = false;

        foreach (ListViewItem itemRow in taskShowListView.Items)
        {

            if (itemRow.Selected == true)
            {
                int taskId = Convert.ToInt32(itemRow.SubItems[0].Text);
                string taskDate = itemRow.SubItems[1].ToString();
                string taskDescription = itemRow.SubItems[2].ToString();

                task1.TaskID = taskId;
                task1.TaskDate = taskDate;
                task1.TaskDescription = taskDescription;

                taskEmployee.EmployeeId = employeeid;
                save = taskEmployeeBLL.TaskEmployeeSaveShow(taskEmployee, task1);

            }

        }


        if (save)
        {
            MessageBox.Show("save success");

        }
        else
        {
            MessageBox.Show("Don't save");
            return;
        }



    }