C#在创建文件后从Windows窗体保存

时间:2013-05-07 03:51:25

标签: c# forms file save

我相信创建文件已经完成了。我在保存到文件时遇到问题。我应该做的是最初创建文件然后填写表单并将其保存到该文件并用文件中的逗号分隔它们,以便在我的下一个作业中我可以创建一个表单来读取文件并进行填充在表单中,用逗号分隔并填入文本框。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace FileExercise
{
    public partial class frmscout : Form
    {
        private StreamWriter fileWriter;

        public frmscout()
        {
            InitializeComponent();
            btnsave.Enabled = false;
        }

        private void clickclear(object sender, EventArgs e)
        {
            tb40.Clear();
            tbheight.Clear();
            tbname.Clear();
            tbposition.Clear();
            tbreps.Clear();
            tbverticle.Clear();
        }

        private void clickexit(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void clickselect(object sender, EventArgs e)
        {
            DialogResult result;
            string fileName;


            using (SaveFileDialog fileChooser = new SaveFileDialog())
            {
                fileChooser.CheckFileExists = false;
                result = fileChooser.ShowDialog();
                fileName = fileChooser.FileName;
            }

            if (result == DialogResult.OK)
            {
                if (fileName == string.Empty)
                {
                    MessageBox.Show("Invalid File Name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    try
                    {
                        FileStream flstrm = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
                        fileWriter = new StreamWriter( flstrm );

                        btnsave.Enabled = true;
                        btnopen.Enabled = false;
                    }
                    catch( IOException )
                    {enter code here
                        MessageBox.Show("Error opening file", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }



            //FileStream outfile = new FileStream(fileName, FileMode.Append, FileAccess.Write);


        }

        private void clicksave(object sender, EventArgs e)
        {
            string[] values = new string[6];

            values[0] = tbname.Text;
            values[1] = tbheight.Text;
            values[2] = tb40.Text;
            values[3] = tbposition.Text;
            values[4] = tbreps.Text;
            values[5] = tbverticle.Text;
            //}                   
        }
    }
}

3 个答案:

答案 0 :(得分:0)

您正在创建StreamWriter的新实例,并在点击“保存”按钮时收集数据,但您无法调用StreamWriter.Write()StreamWriter.WriteLine()。您需要在代码中插入至少其中一个,最有可能在clicksave函数中插入。

编辑: 例如:

private void clicksave(object sender, EventArgs e)
{
    string[] values = new string[6];

    values[0] = tbname.Text;
    values[1] = tbheight.Text;
    values[2] = tb40.Text;
    values[3] = tbposition.Text;
    values[4] = tbreps.Text;
    values[5] = tbverticle.Text;

    fileWriter.WriteLine(String.Join(",",values));
    fileWriter.Flush();
    fileWriter.Close();
    //}                   
}

答案 1 :(得分:0)

你可以这样做

    private void clicksave(object sender, EventArgs e)
    {
        string[] values = new string[6];

        values[0] = tbname.Text;
        values[1] = tbheight.Text;
        values[2] = tb40.Text;
        values[3] = tbposition.Text;
        values[4] = tbreps.Text;
        values[5] = tbverticle.Text;
        // you can get file name from `ShowDialog`, 
        //assume that file name is "filename.txt" then
        System.IO.File.WriteAllLines("filename.txt",values);                   
    }

答案 2 :(得分:0)

 Private void clicksave(object sender, EventArgs e)
{
string[] values = new string[6];

values[0] = tbname.Text;
values[1] = tbheight.Text;
values[2] = tb40.Text;
values[3] = tbposition.Text;
values[4] = tbreps.Text;
values[5] = tbverticle.Text;

fileWriter.WriteLine(String.Join(",",values));
fileWriter.Flush();
fileWriter.Close();

}   

用于连接字符串,您可以参考以下链接....因为这是Adrian Code的参考..

http://www.dotnetperls.com/string-join