列表框中的StreamReader和Writer

时间:2016-02-26 16:31:00

标签: c# streamreader streamwriter

问题1:用户在文本框中输入的内容显示在列表框中,但其他文本首先显示,然后用户输入的内容显示在最后。

问题2:我的StreamReader / StreamWriter我不断收到新的C#1601错误代码,因此我不知道所有条款。

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

namespace foodOrderApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
             InitializeComponent();
             //textDialog = new SaveFileDialog();
             //textDialog.Filter = ""
        }

        private void addToListButton_Click(object sender, EventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(foodText.Text, "^[a-zA-Z]"))
            {
                MessageBox.Show("This textbox only accepts alphebetical characters");
            }
            else
            {
                displayFoodOrder.Items.Add(foodText.ToString());
            }
        }

        private void loadButton_Click(object sender, EventArgs e)
        {
            if (loadButton.ShowDialog() == DialogResult.OK)
            {
                StreamWriter sw = new StreamWriter(
                                    new FileStream(loadButton.FileName,
                                        FileMode.Create,
                                        FileAccess.ReadWrite)
                                    );

                sw.WriteLine(displayFoodOrder.Text);

                sw.Close();
            }
        }

        private void saveOrder_Click(object sender, EventArgs e)
        {
            if (saveOrder.ShowDialog() == DialogResult.OK)
            {
                StreamReader sr = new StreamReader(
                                new FileStream(saveOrder.FileName,
                                    FileMode.Open,
                                    FileAccess.Read)
                                    );

            }//end if
        }
    }
}

错误:

  

CS1061'Button'不包含'FileName'的定义,也没有扩展方法'FileName'接受类型'Button'的第一个参数(你是否缺少using指令或汇编引用?)
  第42行

2 个答案:

答案 0 :(得分:3)

我真的不明白你的第一个问题,其他文字首先出现了什么?

对于你的第二个问题,我认为你还有其他问题。首先你正在使用:

if (loadButton.ShowDialog() == DialogResult.OK)

if (saveOrder.ShowDialog() == DialogResult.OK)

据我所知,这些是你点击的按钮,它们没有ShowDialog方法。

您实际看到的错误是由于您尝试从我仍然怀疑的按钮获取FileName属性(并由错误消息备份 - 'Button' does not contain a definition for 'FileName'):

loadButton.FileName

saveOrder.FileName

我怀疑你实际应该使用的是OpenFileDialogSaveFileDialog控件,但你实际上引用了你点击的按钮。

答案 1 :(得分:1)

我相信Jonno关于SaveFileDialogOpenFileDialog是正确的。单击保存或加载按钮时,应打开其中一个对话框并等待其结果。然后就可以了,你可以SomeFileDialog.FileName而不是loadButton.FileName

你的第一个问题是(如果我正确解读)你看到的东西+用户输入的内容。

这是因为你正在做

displayFoodOrder.Items.Add(foodText.ToString());

而不是尝试

displayFoodOrder.Items.Add(foodText.Text);

您要整个控件而不只是文本字段中的文本。

另外,作为旁注,你的正则表达式匹配第一个字符,因为^而不是所有字符。如果您希望任何字符为.

,则可以使用[a-zA-Z]