【问题标题】:C# Why wouldn't it display the values I set in the List?C# 为什么不显示我在 List 中设置的值?
【发布时间】:2016-03-15 13:55:31
【问题描述】:

您好,我在这个继承项目上真的需要帮助。当用户在组合框中选择一个值时,我需要我的表单显示每个标签中的所有数据。我得到了列表中声明的所有数据,但我不知道为什么当我选择值时标签仍然显示零。

 public partial class Form1 : Form
{


    public Form1()
    {

        InitializeComponent();

    }

    private void accountNumComboBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (accountNumComboBox.SelectedIndex == 0)
        {
            SavingsAccount savings = new SavingsAccount();
            ownerIdLabel.Text = savings.OwnerId;
            balanceLabel.Text = savings.Balance.ToString("c");
            interestLabel.Text = (string.Format("{0}%", savings.Interest));
        }
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        List<SavingsAccount> savings = new List<SavingsAccount>();

        SavingsAccount savings1 = new SavingsAccount();
        savings1.OwnerId = "0001";
        savings1.AccountNumber = "31-1000";
        savings1.Balance = 100m;
        savings1.Interest = 0.01;

        SavingsAccount savings2 = new SavingsAccount();
        savings2.OwnerId = "0002";
        savings2.AccountNumber = "31-1001";
        savings2.Balance = 1000m;
        savings2.Interest = 0.0125;

这是我的 SavingsAccount 类

 class SavingsAccount : BankAccount
{
    //field
    private double _interest;

    //constructor
    public SavingsAccount(string ownerID, string acctNumber, decimal balance, double interest)
        : base(ownerID, acctNumber, balance)
    {
        _interest = interest;
    }
    //interest property
    public double Interest
    {
        get { return _interest; }
        set { _interest = value; }
    }
    public SavingsAccount()
    {

    }
}

感谢您的帮助。谢谢!

【问题讨论】:

  • 你的Form1_LoadaccountNumComboBox_SelectedIndexChanged里面的变量没有关系。
  • 这是一个根本性的误解,并且范围太广,无法在答案中解释。总而言之,您在表单加载事件中使用的savings 变量与您的索引更改事件中的变量没有任何关系,因为它们具有相同的名称。您也没有显示向列表中添加任何内容。
  • 您错过了Form1_Load 方法中可能有用的大量代码。问题的症结在于您需要保留对您创建的savings 列表的引用,并重新使用列表中的元素——调用new SavingsAccount() 不会重新使用现有的。

标签: c# list class inheritance bank


【解决方案1】:

尽管您在下面的代码中声明了值,但您似乎并未真正使用它。

 private void Form1_Load(object sender, EventArgs e)
{
    List<SavingsAccount> savings = new List<SavingsAccount>();

    SavingsAccount savings1 = new SavingsAccount();
    savings1.OwnerId = "0001";
    savings1.AccountNumber = "31-1000";

当您编写下面的代码时,您将在事件内部创建一个新的本地化对象;你没有使用你之前尝试给它的值:

 private void accountNumComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    if (accountNumComboBox.SelectedIndex == 0)
    {
        SavingsAccount savings = new SavingsAccount();
        ownerIdLabel.Text = savings.OwnerId;
        balanceLabel.Text = savings.Balance.ToString("c");

我的建议是移动这段代码:List&lt;SavingsAccount&gt; savings = new List&lt;SavingsAccount&gt;();just 在您的 private double _interest 声明下方。这将使您的其他方法和事件可以访问它。

【讨论】:

  • 谢谢,但它似乎对我不起作用。由于 form_load 和 selectedindex 彼此不相关,我应该为此列表创建一个新方法吗?或者我可以以任何方式使用我声明的值?我真的迷失了这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多