I'm currently trying to access a double from another load form method. Once I change a check box I wish to add/subtract from this variable. I have commented on both the variable and the problem.
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 Virtual_Car_Dealer
{
public partial class BMW : Form
{
private CarDatabase database;
public BMW()
{
InitializeComponent();
}
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void picLogo_Click(object sender, EventArgs e)
{
var Form1 = new Form1();
this.Hide();
Form1.Show();
}
private void picLogo_MouseEnter(object sender, EventArgs e)
{
picLogo.BorderStyle = BorderStyle.FixedSingle;
this.Cursor = Cursors.Hand;
}
private void picLogo_MouseLeave(object sender, EventArgs e)
{
picLogo.BorderStyle = BorderStyle.Fixed3D;
this.Cursor = Cursors.Default;
}
private void BMW_FormClosed(object sender, FormClosedEventArgs e)
{
//Needs Work
}
private void BMW_Load(object sender, EventArgs e)
{
database = new CarDatabase();
database.Show();
database.Hide();
rdbStandard.Checked = true;
int carID = 0;
string value = database.dgvBMW.Rows[carID].Cells["ID"].Value.ToString();
string Model = database.dgvBMW.Rows[carID].Cells["Model"].Value.ToString();
string Stock = database.dgvBMW.Rows[carID].Cells["Stock"].Value.ToString();
string Price = database.dgvBMW.Rows[carID].Cells["Price"].Value.ToString();
string PicLocation = database.dgvBMW.Rows[carID].Cells["Picture Location"].Value.ToString();
txtCarName.Text = Model;
picCar.ImageLocation = PicLocation;
int CarStock;
int.TryParse(Stock, out CarStock);
if (CarStock <= 3)
{
lblStock.ForeColor = Color.Red;
lblStock.Text = "Hurry there's only " + CarStock + " cars availiable!";
}
else
{
lblStock.ForeColor = Color.Green;
lblStock.Text = "There are " + CarStock + " cars availiable!";
}
double carPrice;//the variable
double.TryParse(Price, out carPrice);
lblPrice.Text = "Cost of car - £" + carPrice;
lblTotalPrice.Text = "£" + carPrice;
}
private void btnAccept_Click(object sender, EventArgs e)
{
for (int rows = 0; rows < database.dgvBMW.Rows.Count; rows++)
{
for (int col = 0; col < database.dgvBMW.Rows[rows].Cells.Count; col++)
{
string value = database.dgvBMW.Rows[rows].Cells["model"].Value.ToString();
}
}
}
public void chkAuto_CheckedChanged(object sender, EventArgs e)
{
if (chkAuto.Checked = true)
{
carPrice = carPrice + 1300;//the problem
}
}
}
the error with the method at the bottom states. the name 'carPrice' does not exsist in the current context. thanks in advance
You need to move
carPrice
out of its current scope to become a private field of the class.DaveDev answer is correct move out the variable
Make
carPrice
an instance variableAnd remove it from the method