我正在为学校制定计划。它是一个包含两个选项卡的C#GUI。
在第一个标签上,用户可以输入有关新银行帐户的信息,例如:姓名,帐户ID,年龄和帐户余额。还有一个按钮,用户的名字放在第二个选项卡上的组合框中。因此,第二个选项卡包含组合框和一些文本框:name,id,age和balance。
我面临的问题是,当我从组合框中选择一个名称时,它不会填充所有文本框。我知道文本框的名称,因为我从组合框中拉出它。但我无法弄清楚如何填充其他文本框: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();
}
答案 0 :(得分:1)
答案 1 :(得分: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;
}
这是选择的索引或者选择的内容,我现在不记得了。
答案 2 :(得分: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
将引用类型为BankAccount
的对象,您可以根据需要直接访问其余属性。 ComboBox使用其ToString()
集合中任何对象的Items
方法来确定框中该对象要显示的文本。