Доступ к объекту из другого метода в кнопках формы visual studio 2015

Я работаю над интерфейсом для пользователя, чтобы ввести имя, номер и начальный баланс для создания счета. Затем позволяет пользователю снять или внести деньги через класс под названием Клиент с депозитами и способами вывода.

Я успешно завершил создание учетной записи. Проблема в том, что я создал новый объект с именем cust1, когда счет успешно завершается, но этот объект не может быть доступен, когда пользователь нажимает кнопку, чтобы применить депозит или вывод средств.

взаимодействие

Полный код на данный момент: http://pastebin.com/6HHdMLV1

Объявление объекта находится в нижней части этого кода здесь, это метод, когда пользователь нажимает кнопку создания учетной записи.

private void CreateAccountButton_Click(object sender, EventArgs e)
    {
        string fullName = " ";
        int accountNumber = 0;
        double initialBalance = 0.00;
        Boolean validName = false;
        Boolean validAccount = false;
        Boolean validBalance = false;

        if (string.IsNullOrWhiteSpace(AccountNameInput.Text))
        {
            MessageBox.Show("Please enter your full name.", "Error",
            MessageBoxButtons.OKCancel);
        }
        else if(Regex.IsMatch(AccountNameInput.Text, @"^[a-zA-Z ]+$")) 
        {
            if(AccountNameInput.Text.Contains(" "))
            {
                fullName = AccountNameInput.Text;
                validName = true;
            }
            else
            {
                MessageBox.Show("Full name must contain a space.", "Error",
                MessageBoxButtons.OKCancel);
            }
        }
        else
        {
            MessageBox.Show("Name must not contain numbers or special characters.", "Error",
            MessageBoxButtons.OKCancel);
        }

        if (string.IsNullOrWhiteSpace(AccountNumberInput.Text))
        {
            MessageBox.Show("Please enter your account number", "Error",
            MessageBoxButtons.OKCancel);
        }
        else if(Regex.IsMatch(AccountNumberInput.Text, @"^[0-9]+$"))
        {
            accountNumber = Convert.ToInt32(AccountNumberInput.Text);
            validAccount = true;
        }
        else
        {
            MessageBox.Show("Must contain only numbers.", "Error",
            MessageBoxButtons.OKCancel);
        }

        if (string.IsNullOrWhiteSpace(InitialBalanceInput.Text))
        {
            MessageBox.Show("Please enter your initial balance", "Error",
            MessageBoxButtons.OKCancel);
        }
        else if (Regex.IsMatch(AccountNumberInput.Text, @"^[0-9.]+$"))
        {
            initialBalance = Math.Round(Convert.ToDouble(InitialBalanceInput.Text),2);
            validBalance = true;
        }
        else
        {
            MessageBox.Show("Initial balance must contain only numbers and a decimal point.", "Error",
            MessageBoxButtons.OKCancel);
        }

        if(validName == true && validAccount == true && validBalance == true)
        {
            AccountBalanceDisplay.Text = "$" + Convert.ToString(initialBalance);
            Customer cust1 = new Customer(fullName, accountNumber, initialBalance);
        }
    }

И вот метод, который не в состоянии получить доступ к объекту cust1.

private void ApplyButton_Click(object sender, EventArgs e)
    {
        double userInput = Convert.ToDouble(AmountInput.Text);

        if (DepositRButton.Checked)
        {
            cust1.Deposit(userInput);
        }
    }

1 ответ

  1. Вам просто нужно добавить ссылку на объект вне метода, в котором вы его создаете.

        private cust1;
    
        private void CreateAccountButton_Click(object sender, EventArgs e)
        {
            //Your code
        }
    

    И теперь вы можете просто заменить

    Customer cust1 = new Customer(fullName, accountNumber, initialBalance);
    

    с

    cust1 = new Customer(fullName, accountNumber, initialBalance);
    

    Предполагая, что вам нужно более одного клиента, вы можете использовать список. Таким образом, вы можете просто создать объект, как вы сделали, и добавить его в этот список.

    List<Customer> CustomerList = new List<Customer>();
    
        private void CreateAccountButton_Click(object sender, EventArgs e)
        {
            //Rest of your code
            if(validName == true && validAccount == true && validBalance == true)
            {
                AccountBalanceDisplay.Text = "$" + Convert.ToString(initialBalance);
                Customer cust1 = new Customer(fullName, accountNumber, initialBalance);
                CustomerList.Add(cust1)
        }
    

    И вы можете получить доступ к клиенту по его позиции в списке:

    private void ApplyButton_Click(object sender, EventArgs e)
    {
        double userInput = Convert.ToDouble(AmountInput.Text);
    
        if (DepositRButton.Checked)
        {
            CustomerList[0].Deposit(userInput);
        }
    }