从另一个方法访问变量

时间:2013-09-19 13:04:05

标签: c# variables methods double

我正在尝试从另一个加载表单方法访问double。一旦我更改了复选框,我希望添加/减去此变量。我已经对变量和问题发表了评论。

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

    }


}

}

底部状态下方法的错误。在当前的背景下,'carPrice'这个名称并不存在。 提前谢谢

2 个答案:

答案 0 :(得分:1)

您需要将carPrice移出其当前范围,才能成为该类的私有字段。

答案 1 :(得分:1)

DaveDev的回答是正确的移出变量

public void chkAuto_CheckedChanged(object sender, EventArgs e)
{


    if (chkAuto.Checked = true)
    {

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

}

使carPrice成为实例变量

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

将其从方法

中删除
private void BMW_Load(object sender, EventArgs e)
{
    ...
    // double carPrice;
    ...