-1

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

1
  • Why not declare it as a Instance variable as you did for private CarDatabase database; Commented Sep 19, 2013 at 13:06

2 Answers 2

1

DaveDev answer is correct move out the variable

public void chkAuto_CheckedChanged(object sender, EventArgs e)
{


    if (chkAuto.Checked = true)
    {

        carPrice = carPrice + 1300;//because is declared inside another method

}

Make carPrice an instance variable

public partial class BMW : Form
{
   private CarDatabase database;
   private double carPrice;
   ...

And remove it from the method

private void BMW_Load(object sender, EventArgs e)
{
    ...
    // double carPrice;
    ...
Sign up to request clarification or add additional context in comments.

Comments

1

You need to move carPrice out of its current scope to become a private field of the class.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.