尝试从文本框中获取int时出错

时间:2014-01-14 23:19:07

标签: c# winforms

我是C#的新手和一般的编程。我能够在Console中创建所需的程序,但也想让一个人使用Forms。我试图从文本框中获取int时遇到问题。

在调试时我收到错误:

  

错误3'int'不包含'Text'的定义,也没有扩展方法'Text'可以找到类型'int'的第一个参数(你是否缺少using指令或汇编引用?)D :\ Dropbox \ Classwork \ C_Sharp \ InProgress \ PaintDeterminator \ Paint Determinator Form \ Paint Determinator Form \ Form1.cs 30 57 Paint Determinator Form

这是我到目前为止编写的代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Paint_Determinator_Form
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int LengthtextBox;
            int WidthtextBox;
            int HeighttextBox;
            int paint;
            int answer;

                LengthtextBox = int.Parse(LengthtextBox.Text);
                WidthtextBox = int.Parse(WidthtextBox.Text);
                HeighttextBox = int.Parse(HeighttextBox.Text);
                paint = 350;

                answer = (LengthtextBox * WidthtextBox * HeighttextBox) / paint;

                MessageBox.Show( answer.ToString() );

        }

    }
}

namespace Paint_Determinator_Form
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.label4 = new System.Windows.Forms.Label();
            this.WidthtextBox = new System.Windows.Forms.TextBox();
            this.HeighttextBox = new System.Windows.Forms.TextBox();
            this.LengthtextBox = new System.Windows.Forms.TextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // label1
            // 
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(28, 29);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(454, 13);
            this.label1.TabIndex = 0;
            this.label1.Text = "Welcome to Paint Determinator! Please enter the measurements in the appropriate f" +
    "ields below!";
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(28, 91);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(35, 13);
            this.label2.TabIndex = 1;
            this.label2.Text = "Width";
            // 
            // label3
            // 
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(28, 139);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(38, 13);
            this.label3.TabIndex = 2;
            this.label3.Text = "Height";
            // 
            // label4
            // 
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(28, 183);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(40, 13);
            this.label4.TabIndex = 3;
            this.label4.Text = "Length";
            // 
            // WidthtextBox
            // 
            this.WidthtextBox.Location = new System.Drawing.Point(175, 83);
            this.WidthtextBox.Name = "WidthtextBox";
            this.WidthtextBox.Size = new System.Drawing.Size(100, 20);
            this.WidthtextBox.TabIndex = 5;
            // 
            // HeighttextBox
            // 
            this.HeighttextBox.Location = new System.Drawing.Point(175, 131);
            this.HeighttextBox.Name = "HeighttextBox";
            this.HeighttextBox.Size = new System.Drawing.Size(100, 20);
            this.HeighttextBox.TabIndex = 6;
            // 
            // LengthtextBox
            // 
            this.LengthtextBox.Location = new System.Drawing.Point(175, 183);
            this.LengthtextBox.Name = "LengthtextBox";
            this.LengthtextBox.Size = new System.Drawing.Size(100, 20);
            this.LengthtextBox.TabIndex = 7;
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(349, 402);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 9;
            this.button1.Text = "Paint";
            this.button1.UseVisualStyleBackColor = true;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(511, 447);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.LengthtextBox);
            this.Controls.Add(this.HeighttextBox);
            this.Controls.Add(this.WidthtextBox);
            this.Controls.Add(this.label4);
            this.Controls.Add(this.label3);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.TextBox WidthtextBox;
        private System.Windows.Forms.TextBox HeighttextBox;
        private System.Windows.Forms.TextBox LengthtextBox;
        private System.Windows.Forms.Button button1;
    }

5 个答案:

答案 0 :(得分:7)

为什么要像你的文本框一样命名你的注册?这确实是一种不好的做法,并且在极端情况下令人困惑。如您所见,编译器认为您使用的是int变量而不是文本框,并且抱怨int类型没有名为Text的属性。

只需在click方法中更改int的名称

即可
   private void button1_Click(object sender, EventArgs e)
   {
        int l;
        int w;
        int h;
        int paint;
        int answer;

        l = int.Parse(LengthtextBox.Text);
        w = int.Parse(WidthtextBox.Text);
        h = int.Parse(HeighttextBox.Text);
        paint = 350;

        answer = (l * w * h) / paint;

         MessageBox.Show( answer.ToString() );
    }

说,我建议使用Int32.TryParse将用户输入的数据转换为有效整数。如果您的用户键入了无法转换为整数的内容,Parse方法将抛出异常,而TryParse返回false而不会导致代价高昂的异常

例如

  int l;
  if(!Int32.TryParse(LengthtextBox.Text, out l))
  {
       MessageBox.Show("Please type a valid number for Length");
       return;
  }
  

当Int32.TryParse返回时,out参数(l)包含   32位有符号整数值,相当于您所包含的数字   文本框,如果转换成功,或者如果转换失败则为零

答案 1 :(得分:2)

您正在声明将替换实际文本框的本地范围变量。我们应该使用具有不同名称的局部变量,如:

int length = int.Parse(LengthtextBox.Text);
int width = int.Parse(WidthtextBox.Text);;
int height = int.Parse(HeighttextBox.Text);;

答案 2 :(得分:2)

我更新了您的代码,您使用的变量与实际文本框的名称相同......这不是一个好主意:

using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace Paint_Determinator_Form
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                int length;
                int width;
                int height;
                int paint;
                int answer;

                    length = int.Parse(LengthtextBox.Text);
                    width = int.Parse(WidthtextBox.Text);
                    height = int.Parse(HeighttextBox.Text);
                    paint = 350;

                    answer = (length* width* height) / paint;

                    MessageBox.Show( answer.ToString() );

            }

        }
    }

    namespace Paint_Determinator_Form
    {
        partial class Form1
        {
            /// <summary>
            /// Required designer variable.
            /// </summary>
            private System.ComponentModel.IContainer components = null;

            /// <summary>
            /// Clean up any resources being used.
            /// </summary>
            /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }

            #region Windows Form Designer generated code

            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
            private void InitializeComponent()
            {
                this.label1 = new System.Windows.Forms.Label();
                this.label2 = new System.Windows.Forms.Label();
                this.label3 = new System.Windows.Forms.Label();
                this.label4 = new System.Windows.Forms.Label();
                this.WidthtextBox = new System.Windows.Forms.TextBox();
                this.HeighttextBox = new System.Windows.Forms.TextBox();
                this.LengthtextBox = new System.Windows.Forms.TextBox();
                this.button1 = new System.Windows.Forms.Button();
                this.SuspendLayout();
                // 
                // label1
                // 
                this.label1.AutoSize = true;
                this.label1.Location = new System.Drawing.Point(28, 29);
                this.label1.Name = "label1";
                this.label1.Size = new System.Drawing.Size(454, 13);
                this.label1.TabIndex = 0;
                this.label1.Text = "Welcome to Paint Determinator! Please enter the measurements in the appropriate f" +
        "ields below!";
                // 
                // label2
                // 
                this.label2.AutoSize = true;
                this.label2.Location = new System.Drawing.Point(28, 91);
                this.label2.Name = "label2";
                this.label2.Size = new System.Drawing.Size(35, 13);
                this.label2.TabIndex = 1;
                this.label2.Text = "Width";
                // 
                // label3
                // 
                this.label3.AutoSize = true;
                this.label3.Location = new System.Drawing.Point(28, 139);
                this.label3.Name = "label3";
                this.label3.Size = new System.Drawing.Size(38, 13);
                this.label3.TabIndex = 2;
                this.label3.Text = "Height";
                // 
                // label4
                // 
                this.label4.AutoSize = true;
                this.label4.Location = new System.Drawing.Point(28, 183);
                this.label4.Name = "label4";
                this.label4.Size = new System.Drawing.Size(40, 13);
                this.label4.TabIndex = 3;
                this.label4.Text = "Length";
                // 
                // WidthtextBox
                // 
                this.WidthtextBox.Location = new System.Drawing.Point(175, 83);
                this.WidthtextBox.Name = "WidthtextBox";
                this.WidthtextBox.Size = new System.Drawing.Size(100, 20);
                this.WidthtextBox.TabIndex = 5;
                // 
                // HeighttextBox
                // 
                this.HeighttextBox.Location = new System.Drawing.Point(175, 131);
                this.HeighttextBox.Name = "HeighttextBox";
                this.HeighttextBox.Size = new System.Drawing.Size(100, 20);
                this.HeighttextBox.TabIndex = 6;
                // 
                // LengthtextBox
                // 
                this.LengthtextBox.Location = new System.Drawing.Point(175, 183);
                this.LengthtextBox.Name = "LengthtextBox";
                this.LengthtextBox.Size = new System.Drawing.Size(100, 20);
                this.LengthtextBox.TabIndex = 7;
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(349, 402);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(75, 23);
                this.button1.TabIndex = 9;
                this.button1.Text = "Paint";
                this.button1.UseVisualStyleBackColor = true;
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(511, 447);
                this.Controls.Add(this.button1);
                this.Controls.Add(this.LengthtextBox);
                this.Controls.Add(this.HeighttextBox);
                this.Controls.Add(this.WidthtextBox);
                this.Controls.Add(this.label4);
                this.Controls.Add(this.label3);
                this.Controls.Add(this.label2);
                this.Controls.Add(this.label1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.ResumeLayout(false);
                this.PerformLayout();

            }

            #endregion

            private System.Windows.Forms.Label label1;
            private System.Windows.Forms.Label label2;
            private System.Windows.Forms.Label label3;
            private System.Windows.Forms.Label label4;
            private System.Windows.Forms.TextBox WidthtextBox;
            private System.Windows.Forms.TextBox HeighttextBox;
            private System.Windows.Forms.TextBox LengthtextBox;
            private System.Windows.Forms.Button button1;
        }

答案 3 :(得分:1)

在你的情况下,最好重命名注册,但你也可以在相似的情况下使用它

LengthtextBox = int.Parse(this.LengthtextBox.Text);
WidthtextBox = int.Parse(this.WidthtextBox.Text);
HeighttextBox = int.Parse(this.HeighttextBox.Text);

我认为如果你是编程新手,也可以很好地了解这一点,而只是在不理解的情况下重命名变量。

答案 4 :(得分:1)

button1_Click()方法中删除这些定义,因为您使用与此方法中的类变量相同的名称:

int LengthtextBox;
int WidthtextBox;
int HeighttextBox;

并更改变量的名称:

int length;
int width;
int height;

length= int.Parse(LengthtextBox.Text);
width= int.Parse(WidthtextBox.Text);
height= int.Parse(HeighttextBox.Text);
paint = 350;

answer = (length* width* height) / paint;