2

私は学校向けのプログラムに取り組んでいます。これは、2 つのタブを含む C# GUI です。

最初のタブで、ユーザーは新しい銀行口座に関する情報 (名前、口座 ID、年齢、口座残高など) を入力できます。2 番目のタブのコンボボックスにユーザーの名前を入れるボタンもあります。したがって、2 番目のタブには、名前、ID、年齢、およびバランス用のコンボボックスといくつかのテキストボックスが含まれています。

私が直面している問題は、コンボボックスから名前を選択すると、すべてのテキスト ボックスに入力されないことです。コンボボックスから直接引き出しているため、テキストボックスという名前がわかりました。しかし、ID、年齢、バランスなどの他のテキストボックスにデータを入力する方法がわかりません。これが私がこれまでに持っているものです...

  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

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;
}

それは、選択されたインデックスまたは選択されたインデックスのいずれかであり、今は頭の中で覚えていません。

于 2012-04-04T20:26:11.817 に答える
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 に答える