首页 > 解决方案 > 我可以从文本文件中制作动态组合框吗?

问题描述

我想做一个这样的组合框:

在此处输入图像描述

但是这些框不应该是硬编码的,它们应该来自这样的文本文件:

在此处输入图像描述

在文本文件中添加数据应导致添加组合框。每个组合框也应该有相同的选项列表,它们是 1,2,3,4

我做了以下类来读取和写入文本文件,但是我在互联网上找不到任何资源来将这些文本文件转换为组合框。

public static string ReadFromTextFile(string path)
        {
            if (File.Exists(path))
            {
                string data;
                using (StreamReader r = new StreamReader(path))
                {
                    data = r.ReadToEnd();

                }
                if (data != "")
                {
                    data = "[" + data + "]";
                }
                return data;
            }
            return null;

   }
public static void WriteToTextFile(string path, string data, bool append = true, int count = 1)
        {
            if (!File.Exists(path))
            {
                var file = File.Create(path);
                file.Close();
            }
            using (StreamWriter writer = new StreamWriter(path, append: append))
            {
                if (!append)
                {
                    //remove opening bracket "[" from data passed
                    data = data.Trim().Substring(1, data.Trim().Length - 1);
                    //remove last bracket "]" from data passed
                    data = data.Trim().Substring(0, data.Trim().Length - 1);
                }
                if (count != 0)
                {
                    data = data + ",";
                }
                writer.WriteLine(data);
            }
        }
 public static DataTable ConvertToDataTable<T>(IList<T> data)
        {
            PropertyDescriptorCollection properties =
                TypeDescriptor.GetProperties(typeof(T));
            DataTable table = new DataTable();
            foreach (PropertyDescriptor prop in properties)
                table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
            if (data != null)
            {
                foreach (T item in data)
                {
                    DataRow row = table.NewRow();
                    foreach (PropertyDescriptor prop in properties)
                        row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
                    table.Rows.Add(row);
                }
            }
            return table;
        }

标签: c#.netvisual-studiowinformscombobox

解决方案


我现在没有可用的视觉工作室。所以,我会给你前进的方向。

  1. 读取该行并将其拆分为字符串数组。

    字符串[] arr= line.Split(",");

  2. 第一个(比如食物)是标题,其余的是值。

  3. 循环遍历数组。

    for (int i=1;i<= arr.Length;i++) { }

  4. 将其添加到组合框项目中,例如cbo.Items.Add(arr[i]).

遍历文件中的行,您将获得所需的输出。


推荐阅读