列表始终只显示第一个项目c#

时间:2016-04-25 07:26:14

标签: c# list add

我正在使用wpf构建医疗应用程序,并且我已经为患者的处方创建了一个列表,我在其中添加了.add函数。但它始终只显示添加的最后一项,而不是全部。任何意见?提前致谢!以下是我的代码:

private void AddMeds_Click(object sender, RoutedEventArgs e)
{
    if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
    {
        List<string> medlist = new List<string>();
        int i = 0;
        medlist.Add(MedNameAdd.Text + "   " + MedQuantAdd.Text + "     " + QuantType.Text);
        MedList.ItemsSource = medlist;
        Address.Text = medlist[i];
        i++; 
    }
}

5 个答案:

答案 0 :(得分:2)

您每次都在创建新的List,将声明移到外部函数。

List<string> medlist = new List<string>();

private void AddMeds_Click(object sender, RoutedEventArgs e)
{
    if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
    {   
        medlist.Add(MedNameAdd.Text + "   " + MedQuantAdd.Text + "     " + QuantType.Text);
        MedList.ItemsSource = medlist;
        Address.Text = medlist.LastOrDefault(); // shows last added item.    
    }
}

答案 1 :(得分:1)

似乎在您的代码中,您始终创建了新的列表并将其添加为ItemSource。相反,重新使用现有的

   if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
   {
       var medlist = MedList.ItemsSource as List<string>;
       int i = 0;
       medlist.Add(MedNameAdd.Text + "   " + MedQuantAdd.Text + "     " + QuantType.Text);
       Address.Text = medlist[i];
       i++; 
    }

答案 2 :(得分:1)

列表medList在方法AddMeds_Click中是本地的,这意味着它是在每次调用中新创建的。

答案 3 :(得分:1)

因为每次添加新的数据源时,您都会从头开始重新接收数据源,只添加新添加的项目,并擦除之前添加的所有项目。

List<string>的声明移到click事件处理程序之外:

List<string> medlist = new List<string>();
private void AddMeds_Click(object sender, RoutedEventArgs e)
    {
        if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
        {
            int i = 0;
            medlist.Add(MedNameAdd.Text + "   " + MedQuantAdd.Text + "     " + QuantType.Text);
            MedList.ItemsSource = medlist;
            Address.Text = medlist[i];
            i++; 

        }

答案 4 :(得分:0)

似乎每次在事件处理程序中创建List Class的新实例并且只添加一个项目:

   medlist.Add(MedNameAdd.Text + "   " + MedQuantAdd.Text + "     " + QuantType.Text);

将列表实例化为类成员,并在事件处理程序中使用该列表对象以这种方式保存其中的值:

List<string> medlist = new List<string>();

private void AddMeds_Click(object sender, RoutedEventArgs e)
{
    if (MedNameAdd.Text != null && MedQuantAdd.Text != null && QuantType.Text != null)
    {
        int i = 0;
        medlist.Add(MedNameAdd.Text + "   " + MedQuantAdd.Text + "     " + QuantType.Text);
        MedList.ItemsSource = medlist;
        Address.Text = medlist[i];
        i++; 
    }
}