2013-11-28 49 views
0

我是C#中的童话新手,并试图学习它。 我需要一个对话框来将资金从一个帐户转移到另一个帐户,所有帐户都属于一个特定的客户,因此我决定将客户的accountCollection定义为客户类的静态变量。在对话框中有两个组合框,其中一个组合框从账户持有,另一组持有账户。我使用DataSourse成员填充它们。但是这里的问题是我从一个组合框中选择的帐户在另一个组合框中选择了相同的帐户。我不知道如何解决它。如果任何人都可以给我一些提示,真的很感激。 这里是我的工作:使用2个combox从一个数据集合中填充

public partial class TransferDialog : Form 
{ 
    string enteredAmount; 
    int fromComboBoxSelectedIndex; 
    int toComboBoxSelectedIndex; 



    public TransferDialog() 
    { 
     InitializeComponent(); 
    } 

    private void TransferDialog_Load(object sender, EventArgs e) 
    { 
     pupulateComboBox(); 
     comboBoxFromAccountTransferDialog.DisplayMember = "AccountName"; 
     comboBoxToAccountTransferDialog.DisplayMember = "AccountName"; 
    } 

    private void pupulateComboBox() 
    { 
     AccountCollection accountsForFromComboBox = new AccountCollection(); 
     AccountCollection accountsForToComboBox = new AccountCollection(); 
     accountsForFromComboBox = Customer.Accounts; 
     accountsForToComboBox = Customer.Accounts; 
     comboBoxFromAccountTransferDialog.DataSource = accountsForFromComboBox; 
     comboBoxToAccountTransferDialog.DataSource = accountsForToComboBox; 
    } 

    private void buttonOkTranserFundDialog_Click(object sender, EventArgs e) 
    { 
     fromComboBoxSelectedIndex = comboBoxFromAccountTransferDialog.SelectedIndex; 
     toComboBoxSelectedIndex = comboBoxToAccountTransferDialog.SelectedIndex; 
     enteredAmount = textBoxTransferAmont.Text; 
     this.DialogResult = DialogResult.OK; 
    } 


} 
+0

是否有任何财产,以确定一个帐户?那是'AccountName'? –

+0

顺便说一句,我可以看到,2个组合框具有相同的源'Customer.Accounts',所以它们应该始终具有相同的选定项目。 –

回答

0

您最初定义两个单独的列表。

AccountCollection accountsForFromComboBox = new AccountCollection(); 
AccountCollection accountsForToComboBox = new AccountCollection(); 

但是,然后你指向他们两个相同Customer.Accounts集合。所以现在他们引用了同一个对象。

accountsForFromComboBox = Customer.Accounts; 
accountsForToComboBox = Customer.Accounts; 

然后你在两个组合框,这两者也都是引用相同Customer.Accounts收集组的数据源。你需要保持他们彼此分开。

comboBoxFromAccountTransferDialog.DataSource = accountsForFromComboBox; 
comboBoxToAccountTransferDialog.DataSource = accountsForToComboBox; 

您需要在不引用相同对象的情况下填充这些初始变量。

我不知道什么AccountCollection看起来像内部,所以我不知道我可以推荐如何从Customer.Accounts填充每个变量。

如果它只是一个列表,你应该能够使用:

var accountsForFromComboBox = new AccountCollection(Customer.Accounts); 
var accountsForToComboBox = new AccountCollection(Customer.Accounts); 
+0

嗨格兰特! AccountCollection is List user2730833

+0

在这种情况下,请尝试:'accountsForFromComboBox = new List (Customer.Accounts)' –

相关问题