单击按钮后,继续在列表中添加项目

时间:2017-10-12 17:06:29

标签: c# list

我在xamarin.forms中有一个简单的移动应用程序。我有一个按钮,当点击时触发一个通过相机扫描代码的方法。扫描完成后,就会得到数字。但是,我想扫描几个代码并存储相应的数字。因此,每次扫描后,我会再次单击该按钮进行扫描。

我在C#中的代码如下:

TextView
  

问题是该列表中包含一个数字。经过另一次扫描,   它删除以前的号码并存储新号码。

我的问题是如何才能存储以前的数字呢?

2 个答案:

答案 0 :(得分:3)

在我看来,您需要在此功能之外创建列表,并在另一个功能中添加/删除表单。

  ListNumbers = new ObservableCollection<string>();
 public async void StoreNum()
{   

var num = await ScanCodeVM.CodePage(); // returns a string

if (num != null)
{
    ListNumbers.Add(num);     
}
}

 // do something with that list.

答案 1 :(得分:0)

  1. 在点击方法之外实例化数字集合
  2. 仅用于集合中的唯一编号 HashSet<string>
  3. public class NumberReader
    {
        public HashSet<string> Numbers { get; set; }
    
        // Numbers instantiated in constructor
        public NumberReader()
        {
            Numbers = new HashSet<string>();
        }
    
        // Executed when user click a button
        public async Task Read()
        {
            var number = await ScanCodeVm.CodePage();
            if (number != null)
            {
                Numbers.Add(number);
            }
        }
    }
    

    HashSet<T>.Add方法只会添加唯一值。成功添加给定值时返回true,当集合中已存在给定值时返回false

    不要将async void用于函数 - 因为所有可能的异常都将被“吞噬”。但是可以将async void用于事件处理程序。