2

我正在为学校制定一个计划。它是一个包含两个选项卡的 C# GUI。

在第一个选项卡上,用户可以输入有关新银行帐户的信息,例如:姓名、帐户 ID、年龄和帐户余额。还有一个按钮可以将用户名放在第二个选项卡上的组合框中。所以第二个选项卡包含组合框和几个文本框:姓名、ID、年龄和余额。

我面临的问题是,当我从组合框中选择一个名称时,它不会填充所有文本框。我想出了名称文本框,因为我是从组合框中直接拉出来的。但我不知道如何填充其他文本框:id、age 和 balance。这是我到目前为止所拥有的...

  class BankAccount
    {
        //attributes
        private string accountID;
        private string customerName;
        private int customerAge;
        private double balance;
        private const double DEFAULT_BALANCE = 500.00;

        //construct
        public BankAccount()
        {
        }

        public BankAccount(string anID, string aName, int anAge, double aBalance)
        {
            accountID = anID;
            customerName = aName;
            customerAge = anAge;
            balance = aBalance;
        }

        public BankAccount(string anID, string aName, int anAge)
        {
            accountID = anID;
            customerName = aName;
            customerAge = anAge;
            balance = DEFAULT_BALANCE;
        }


        //accessors
        public void SetID(string anID)
        {
            accountID = anID;
        }

        public void SetName(string aName)
        {
            customerName = aName;
        }

        public void SetAge(int anAge)
        {
            customerAge = anAge;
        }

        public void SetBalance(double aBalance)
        {
            balance = aBalance;
        }

        public string GetID()
        {
            return accountID;
        }

        public string GetName()
        {
            return customerName;
        }

        public int GetAge()
        {
            return customerAge;
        }

        public double GetBalance()
        {
            return balance;
        }



and this is the form

   public partial class Form1 : Form
    {
        ArrayList account = new ArrayList();

        public Form1()
        {
            InitializeComponent();
        }



        private void btnAddAccount_Click(object sender, EventArgs e)
        {
            BankAccount aBankAccount = new BankAccount(txtAccountID.Text, txtName.Text,
                int.Parse(txtAge.Text), double.Parse(txtBalance.Text));

            account.Add(aBankAccount);
            AddToComboBox();
            ClearText();


        }

        private void AddToComboBox()
        {
            cboAccount.Items.Clear();
            foreach (BankAccount person in account)
            {
                cboAccount.Items.Add(person.GetName());


            }






        }
        private void ClearText()
        {
            txtName.Clear();
            txtAccountID.Clear();
            txtBalance.Clear();
            txtAge.Clear();
            txtAccountID.Focus();


        }

        private void cboAccount_SelectedIndexChanged(object sender, EventArgs e)
        {

            txtNameTab2.Text = cboAccount.SelectedItem.ToString();



        }
4

3 回答 3

1

既然你说这是家庭作业,我会尽量指导你而不是给出代码。

您需要检查ComboBox的以下属性:

  1. 价值会员
  2. 显示成员
  3. 数据源
于 2012-04-04T20:34:15.610 回答
0

你可以很简单地做到这一点。首先,您需要ToString()在您的BankAccount类中覆盖,您可以通过将此方法添加到类中来实现:

public override string ToString() {
    return self.CustomerName;
}

然后将BankAccount对象添加为BankAccount对象(而不是将其 GetName() 值添加为字符串):

private void AddToComboBox()
{
    cboAccount.Items.Clear();
    foreach (BankAccount person in account)
    {
        //cboAccount.Items.Add(person.GetName());
        cboAccount.Items.Add(person);
    }
}

现在,cboAccount.SelectedItem将引用 type 的对象BankAccount,您可以根据需要直接访问其其余属性。ComboBox 使用ToString()其集合中任何对象的方法Items来确定要在框中为该对象显示什么文本。

于 2012-04-04T20:35:07.367 回答
0

你想有一个List<BankAccount>存储每个人

所以在你的主要形式做这样的事情

Private List<BankAccount> account = new List<BankAccount>()

我也可能会更改方法以获取属性信息,因为它们更合适地显示信息。

  //construct
public BankAccount()
{
}

public BankAccount(string anID, string aName, int anAge, double aBalance)
{
    AccountID = anID;
    CustomerName = aName;
    CustomerAge = anAge;
    if (abalance == 0)
    {
      Balance = DEFAULT_BALANCE;
    }
    else {
      Balance = aBalance;
    }
}

private string _CustomerName;
public string CustomerName
{
  get {
    retrun _CustomerName;
  }
  set {
   _CustomerName = value;
  }

private string _AccountID;
public string AccountID
{
  get {
    retrun _AccountID;
  }
  set {
   _AccountID= value;
  }

private string _CustomerAge;
public string CustomerAge
{
  get {
    retrun _CustomerAge;
  }
  set {
   _CustomerAge= value;
  }

private string _Balance;
public string Balance
{
  get {
    retrun _Balance;
  }
  set {
   _Balance= value;
  }

我要做属性的原因是,这基本上就是您对方法所做的事情,但是您必须创建其他方法来设置和获取它们,这些方法内置于属性中。

在主窗体中

private void btnAddAccount_Click(object sender, EventArgs e)
{
    BankAccount aBankAccount = new BankAccount(txtAccountID.Text, txtName.Text,
        int.Parse(txtAge.Text), double.Parse(txtBalance.Text));

    account.Add(aBankAccount);
    AddToComboBox();
    ClearText();
}

private void cboAccount_SelectedIndexChanged(object sender, EventArgs e)
{
    txtNameTab2.Text = account[cboAccount.SelectedIndex].CustomerName;
    txtAgeTab2.Text = account[cboAccount.SelectedIndex].CustomerAge;
    txtIDTab2.Text = account[cboAccount.SelectedIndex].AccountID;
    txtBalanceTab2.Text = account[cboAccount.SelectedIndex].Balance;
}

它要么是选定的索引,要么是 selectedIndecies,我现在不记得了。

于 2012-04-04T20:26:11.817 回答