Я пытаюсь сделать приложение winform. Приложение имеет 2 текстовых поля (firstName, lastName), numericUpDown и флажок. Приложение может читать из текстового файла, с разделенными запятыми строками (Daniel, Brown, 26, true). Приложение поместит эту информацию в список. Затем вы можете добавить нового пользователя. Когда вы закончите добавление пользователей, вы нажимаете сохранить, и новая информация из lisbox будет сохранена в этом текстовом файле. Я создал скрипт чтения файла и успешно добавил пользователя. Однако я не могу создать кнопку сохранения пользователя, чтобы она сохранялась: Даниэль, Браун, 26 лет, правда. Я смог сохранить как: Даниэль, Браун, 26 лет, счастлив. Вот класс Person:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Age { get; set; }
public bool IsHappy { get; set; }
public override string ToString()
{
var statusText = IsHappy ? "happy" : "not happy";
return $"{FirstName} {LastName} is {Age} and is {statusText}";
}
}
Вот файл form.cs со своим скриптом:
public partial class ChallengeForm : Form
{
private BindingList<Person> _persons = new BindingList<Person>();
private PersonsService _personsService;
public ChallengeForm()
{
_personsService = new PersonsService();
InitializeComponent();
WireUpDropDown();
}
private void WireUpDropDown()
{
_persons = new BindingList<Person>(_personsService.GetPersons(@"C:\Users\user\Desktop\Document.TXT"));
usersListBox.DataSource = _persons;
}
private void addUserButton_Click(object sender, EventArgs e)
{
var person = new Person { FirstName = firstNameText.Text, LastName = lastNameText.Text, Age = agePicker.Text, IsHappy = isHappyCheckbox.Checked };
_persons.Add(person);
}
private void saveListButton_Click(object sender, EventArgs e)
{
}
}
Мой вопрос: как я могу преобразовать статус обратно в bool. И запишите список в текстовый файл как csv. Я был бы очень благодарен, если бы вы могли использовать SoC. Вот что я попробовал:
const string sPath = (@"C:\Users\user\Desktop\Document.TXT");
System.IO.StreamWriter SaveFile = new System.IO.StreamWriter(sPath);
SaveFile.Write(myperson);
foreach (var item in usersListBox.Items)
{
List<string> unwantedWords = new List<string> { "is", "and" };
var linesSplitted = item.ToString().Split(' ').ToList();
var wordsWithoutUnwantedWords = linesSplitted.Where(i => !unwantedWords.Contains(i)).ToList();
for (int i = 0; i<wordsWithoutUnwantedWords.Count; i++)
{
var isLastWord = i == wordsWithoutUnwantedWords.Count - 1;
SaveFile.Write(wordsWithoutUnwantedWords[i]);
if (!isLastWord)
{
SaveFile.Write(",");
}