1

私は、従業員データを 4 つの要素の配列として受け取り、これらのデータを区切り文字 (",") を使用して 1 行でテキスト ファイルに正しく保存する Winform アプリに取り組んでいます。

私の質問は、名前である最初の項目ですべてのデータを読み取ることができるように、行データをロードして区切り記号 (",") を認識させる方法です。

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

ファイルを再度読み込んで、選択した区切り文字で Split を使用するだけです。

        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 に答える