I am new to C# and programming in general. I was able to create the required program in Console but want to get one working with Forms as well. I am running into an issue wh
Why do you name your ints like your textboxes? It is really a bad practice and confusing at the uttermost level. As you can see, the compiler thinks that you are using the int variables instead of the textboxes and complains that an int type have no property called Text.
So simply change the name of the ints inside the click method
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() );
}
Said that, I suggest to use Int32.TryParse to convert the data typed by your user in a valid integer. The Parse method will throw an exception if your user types something that cannot be translated to an integer, instead TryParse
returns false without a costly exception
For example
int l;
if(!Int32.TryParse(LengthtextBox.Text, out l))
{
MessageBox.Show("Please type a valid number for Length");
return;
}
When the Int32.TryParse returns, the out parameter (l) contains the 32-bit signed integer value equivalent of the number contained in your textbox, if the conversion succeeds, or zero if the conversion fails
I updated your code, you were using variables with the same names as your actual text boxes... That's not a good idea:
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;
}
In your situatuation it's better to rename ints, but you are ablealso to use this in simmilar situation
LengthtextBox = int.Parse(this.LengthtextBox.Text);
WidthtextBox = int.Parse(this.WidthtextBox.Text);
HeighttextBox = int.Parse(this.HeighttextBox.Text);
I think if you are new in programing it's good to know about this too, instead just renaming variables without understanding.
You're declaring locally scoped variables that will replace your actual textboxes. Yo ushould use local variables that have different names like:
int length = int.Parse(LengthtextBox.Text);
int width = int.Parse(WidthtextBox.Text);;
int height = int.Parse(HeighttextBox.Text);;
Remove those definitions from button1_Click()
method as you use the same names as the class variables inside this method:
int LengthtextBox;
int WidthtextBox;
int HeighttextBox;
And change the name of the variables:
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;