【问题标题】:How can I populate comboboxes from arrays?如何从数组中填充组合框?
【发布时间】:2015-06-14 09:32:22
【问题描述】:

我是一个包含姓名和电话号码的文本文件。我的讲师给了我一段代码,将其分成两个数组。现在我无法用这些数组填充姓名和电话号码组合框。我得到的只是错误说 array1 和 array2 在当前上下文中不存在。我怎样才能正确地做到这一点?

这是我的代码的相关部分;

公共部分类 MainWindow : Window { 私有字符串 cFileName = "customer.txt"; 私有字符串[] cNames = 新字符串[0]; 私有字符串[] cPhoneNumbers = 新字符串[0];

    public MainWindow()
    {
        InitializeComponent();
        this.Loaded += new RoutedEventHandler(Window_Loaded);
    }

    private void read_Delimited_File(string fileName, ref string[] array1, ref string[] array2)
    {
        StreamReader fileSR = new StreamReader(fileName);

        char[] delimiters = { ',' };

        string[] tempArray = new string[0];
        string line = fileSR.ReadLine();
        while (line != null)
        {
            Array.Resize(ref array1, array1.Length + 1);
            Array.Resize(ref array2, array2.Length + 1);

            tempArray = line.Split(delimiters);

            array1[array1.Length - 1] = tempArray[0];
            array2[array2.Length - 1] = tempArray[1];
            line = fileSR.ReadLine();
        }
        fileSR.Close();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        Keyboard.Focus(phoneTextBox);

        read_Delimited_File(cFileName, ref cNames, ref cPhoneNumbers);

        for (int i = 0; i < array1.Length; i++)
        {
            nameComboBox.Items.Add(array1[i]);
        }

        for (int i = 0; i < array2.Length; i++)
        {
            phoneNumberComboBox.Items.Add(array1[i]);
        }
    }

【问题讨论】:

    标签: c# arrays wpf combobox split


    【解决方案1】:

    变量array1array2 仅存在于您的函数范围内。

    您的意思是使用cNamescPhoneNumbers

    【讨论】:

      【解决方案2】:

      我会在 2 秒内解雇一个像你一样编写代码的人。永远不要调整数组的大小。而是使用列表对象!!!试试这个

      private void read_Delimited_File(string fileName, ref List<string> array1, ref List<string> array2)
              {
                  StreamReader fileSR = new StreamReader(fileName);
      
                  char[] delimiters = { ',' };
      
                  string line = "";
                  while ((line = fileSR.ReadLine()) != null)
                  {
                      string[] tempArray = line.Trim().Split(delimiters);
                      array1.Add(tempArray[0]);
                      array2.Add(tempArray[1]);
                  }
                  fileSR.Close();
              }
              private void Window_Loaded(object sender, RoutedEventArgs e)
              {
                  Keyboard.Focus(phoneTextBox);
                  List<string> cNames = new List<string>();
                  List<string> cPhoneNumbers = new List<string>();
      
      
                  read_Delimited_File(cFileName, ref cNames, ref cPhoneNumbers);
      
                  for (int i = 0; i < array1.Length; i++)
                  {
                      nameComboBox.Items.Add(array1[i]);
                  }
      
                  for (int i = 0; i < array2.Length; i++)
                  {
                      phoneNumberComboBox.Items.Add(array1[i]);
                  }
              }​
      

      【讨论】:

      • 嘿,我说我的讲师给了我使用的代码。不要开除我。解雇我的讲师。
      • 是的,他还说我应该让我的渔获物相互嵌套。社区大学没有机会退还我的钱,到目前为止都是免费的。
      猜你喜欢
      • 2012-02-09
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      相关资源
      最近更新 更多