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

我是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 { ///  /// Required designer variable. ///  private System.ComponentModel.IContainer components = null; ///  /// Clean up any resources being used. ///  /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code ///  /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///  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; } 

为什么要像你的文本框一样命名你的注册? 这确实是一种不好的做法,并且在极端情况下令人困惑。 如您所见,编译器认为您使用的是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方法将抛出exception,而TryParse返回false而不会导致代价高昂的exception

例如

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

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

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

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

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

 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 { ///  /// Required designer variable. ///  private System.ComponentModel.IContainer components = null; ///  /// Clean up any resources being used. ///  /// true if managed resources should be disposed; otherwise, false. protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code ///  /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///  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; } 

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; 

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

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

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