1

我正在开发 Winform 应用程序,该应用程序将员工数据作为 4 个元素的数组,并将这些数据正确保存到带有分隔符(“,”)的一行中的文本文件中。

我的问题是如何让它加载任何行数据并识别分隔符(“,”),以便我可以让它通过第一项名称读取所有数据?

public partial class Form1 : Form
    {
        string[] data = new string[4];
        string name;
        string job;
        string salary;
        string join;

        #region Save


void save()
    {
        if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "")
        {
            MessageBox.Show("Please Fill All Fields", "error");
        }

        FileStream file = new FileStream("info.txt", FileMode.Append, FileAccess.Write);
        StreamWriter wr = new StreamWriter(file);
        wr.WriteLine(String.Join(",", data));
        wr.Flush();
        wr.Close();
        comboBox1.Items.Add(data[0]);
        textBox1.Clear();
        textBox2.Clear();
        textBox3.Clear();
        textBox4.Clear();

    }
    #endregion

    #region Search
    void search()
    {
        FileStream file = new FileStream("info.txt", FileMode.Open, FileAccess.Read);
        StreamReader sr = new StreamReader(file);
        sr.ReadLine(string.//what should i do here?
        string[] lines = File.ReadAllLines("info.txt");
        data[0].CompareTo(comboBox1.SelectedItem);
        sr.ReadLine();
        if (data[0] == name)
        {
            textBox1.Text = (data[0]);
            textBox2.Text = (data[1]);
            textBox3.Text = (data[2]);
            textBox4.Text = (data[3]);
        }
    } 
    #endregion  
4

3 回答 3

3

您可以简单地再次读取文件,然后在您选择的分隔符上使用拆分

        var textLines = File.ReadAllLines("");

        foreach (var line in textLines)
        {
            string[] dataArray = line.Split(',');
        }
于 2013-10-05T02:38:08.750 回答
1

终于成功了,将行拆分为数组数据,每个都添加到右侧的文本框中:

void search()
        {
            FileStream file = new FileStream("info.txt", FileMode.Open, FileAccess.Read);
            StreamReader sr = new StreamReader(file);
            sr.ReadLine();
            var textLines = File.ReadAllLines("info.txt");

            foreach (var line in textLines)
            {
                string[] dataArray = line.Split(',');
                dataArray[0].CompareTo(comboBox1.SelectedItem);
                if (dataArray[0] == comboBox1.SelectedItem.ToString())
                {
                   textBox1.Text = (dataArray[0]);
                   textBox2.Text = (dataArray[1]);
                   textBox3.Text = (dataArray[2]);
                   textBox4.Text = (dataArray[3]); 
                }
            }
        } 

非常感谢李君伟先生

于 2013-10-05T14:23:22.243 回答
0
[DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
                int size, string filePath);
 /// <summary>
        /// read value from given section and key
        /// </summary>
        /// <param name="Section">string</param>
        /// <param name="Key">string</param>
        /// <returns>string</returns>
 public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();

        }

要调用此函数,请参见下面的代码

 string[] sBENCHNO=new Strin[256];
     sBENCHNO = ini.IniReadValue("Sextion", "Key");
于 2015-09-25T11:51:16.187 回答