StreamReader и Writer из списка
Вопрос 1: все, что пользователь вводит в текстовое поле, отображается в списке, но сначала отображается другой текст, а затем вводится пользователь в конце.
Вопрос 2: мой StreamReader
/ StreamWriter
Я продолжаю получать код ошибки 1601 для новичков в C#, поэтому я не знаю всех терминов.
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 "Кнопка" не содержит определения для "FileName", и невозможно найти метод расширения "FileName", принимающий первый аргумент типа "Button" (вам не хватает директивы using или ссылки на сборку?)
линия 42
2 ответа
Я не очень понимаю ваш первый вопрос, какой другой текст появляется первым?
Что касается вашего второго вопроса, на самом деле есть и другие проблемы, которые, я думаю, у вас есть. Во-первых, вы используете:
if (loadButton.ShowDialog() == DialogResult.OK)
а также
if (saveOrder.ShowDialog() == DialogResult.OK)
Из того, что я могу сказать, это кнопки, которые вы нажимаете, которые не будут иметь ShowDialog
метод.
Ошибка, которую вы на самом деле смотрите, связана с тем, что вы пытаетесь получить FileName
свойство, от которого я все еще подозреваю, - кнопки (и поддержано сообщением об ошибке - 'Button' does not contain a definition for 'FileName'
):
loadButton.FileName
а также
saveOrder.FileName
Я подозреваю, что вы на самом деле должны использовать это OpenFileDialog
а также SaveFileDialog
управления, но вы на самом деле ссылались на кнопки, которые вы нажимаете вместо этого.
Я верю, что Йонно прав насчет SaveFileDialog
а также OpenFileDialog
, При нажатии кнопки сохранения или загрузки вы должны открыть один из этих диалогов и дождаться его результата. Тогда на все в порядке, вы можете сделать SomeFileDialog.FileName
вместо loadButton.FileName
Ваш первый вопрос (если я правильно понял), что вы видите материал + то, что ввел пользователь.
Это потому что ты делаешь
displayFoodOrder.Items.Add(foodText.ToString());
вместо этого попробуйте
displayFoodOrder.Items.Add(foodText.Text);
Вы запускаете весь элемент управления, а не только текст в его текстовом поле.
Кроме того, в качестве примечания, ваше регулярное выражение соответствует первому символу из-за ^
и не все персонажи. Ты можешь использовать .
если вы хотите, чтобы любой персонаж был [a-zA-Z]