2015-11-17 11 views
0

Я ищу решение для сохранения и перезагрузки того, что я ввожу в свои текстовые поля, или того, что я заполнил в своих ComboBoxes. Вот код, который у меня есть, но я не уверен, что все правильно. Я только отправляю код, в котором мне нужна помощь. Если вам нужна вся серия кода, я могу опубликовать ее, но я не думал, что это имеет отношение к тому, что я прошу. Это то, что я сделал до сих пор, и я не уверен, что он действительно сохранит введенную информацию, и я совершенно не уверен, что добавить метод loadLastBtn. Я просто хочу, чтобы он был сохранен в памяти, даже когда тексты текстовых полей изменились, а затем я хочу получить это из памяти, когда я нажму на loatLastbtn.Сохраните и перезагрузите данные в C-образных формах

private void submitBtn_Click(object sender, EventArgs e) 
    { 
     List<Members> lstMembers = new List<Members>(); 
     if (string.IsNullOrEmpty(firstNameTxt.Text) || string.IsNullOrEmpty(lastNameTxt.Text) 
      || string.IsNullOrEmpty(userNameTxt.Text) || 
      string.IsNullOrEmpty(passwordTxt.Text) || string.IsNullOrEmpty(confPassTxt.Text) 
      || string.IsNullOrEmpty(majorBox.Text) || string.IsNullOrEmpty(specialtyBox.Text)) 
     { 
      MessageBox.Show("You must enter in all fields before moving forward"); 
     } 
     else 
     { 
      //would this save my data to the array and how can I reload this? 
      Members m1 = new Members(firstNameTxt.Text, lastNameTxt.Text, userNameTxt.Text, 
             passwordTxt.Text, confPassTxt.Text, majorBox.Text, 
             specialtyBox.Text); 
      lstMembers.Add(m1); 
     } 
    } 
    private void loadLastBtn_Click(object sender, EventArgs e) 
    { 
      for(int i = 0; i < lstMembers.Count; i++) 
     { 
      firstNameTxt.Text = lstMembers[i].FirstName; 
      lastNameTxt.Text = lstMembers[i].LastName; 
      userNameTxt.Text = lstMembers[i].UserName; 
      passwordTxt.Text = lstMembers[i].Password; 
      confPassTxt.Text = lstMembers[i].ConfPassword; 
      majorBox.Text = lstMembers[i].Major; 
      specialtyBox.Text = lstMembers[i].Specialty; 
     } 
    } 

Вот пользовательский объект, который я создал. Я просто не знаю, как назвать это сейчас, когда я хочу сохранить и перезагрузить.

class Members 
{ 
    private string firstName; 
    private string lastName; 
    private string userName; 
    private string password; 
    private string confPassword; 
    private string major; 
    private string specialty; 

    public Members(string firstName, string lastName, string userName, string password, 
        string confPassword, string major, string specialty) 
    { 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.userName = userName; 
     this.password = password; 
     this.confPassword = confPassword; 
     this.major = major; 
     this.specialty = specialty; 
    } 
    public string FirstName 
    { 
     get 
     { 
      return firstName; 
     } 
     set 
     { 
      FirstName = firstName; 
     } 
    } 
    public string LastName 
    { 
     get 
     { 
      return lastName; 
     } 
     set 
     { 
      LastName = lastName; 
     } 
    } 
    public string UserName 
    { 
     get 
     { 
      return userName; 
     } 
     set 
     { 
      UserName = userName; 
     } 
    } 
    public string Password 
    { 
     get 
     { 
      return password; 
     } 
     set 
     { 
      Password = password; 
     } 
    } 
    public string ConfPassword 
    { 
     get 
     { 
      return confPassword; 
     } 
     set 
     { 
      ConfPassword = confPassword; 
     } 
    } 
    public string Major 
    { 
     get 
     { 
      return major; 
     } 
     set 
     { 
      Major = major; 
     } 
    } 
    public string Specialty 
    { 
     get 
     { 
      return specialty; 
     } 
     set 
     { 
      Specialty = specialty; 
     } 
    } 
+0

Что вы подразумеваете под «сохранить информацию». Вы хотите сохранить ее в файловой системе или просто сохранить ее в памяти, даже после того, как тексты текстовых полей изменились? –

+0

Сохранить на месте? На диск или память? Независимо от цели, область массива строки является событием клика, и она не будет доступна после завершения этого метода. какое хранилище вы хотите сохранить данные, мы можем помочь. (для случая с диском, вы h ave параметр данных приложения для сохранения данных в папке appdata) –

+0

Это присвоит значения вашему массиву да, но как вы определяете «сохранить» и «загрузить»? Вы хотите, чтобы это было написано/прочитано из текстового файла или базы данных? Или просто просто передавать данные между элементами управления с помощью кнопок «Отправить» и «Загрузить»? Если вы хотите последний, просто определите 'string [] s1' вне области вашего события' submitBtn_Click', чтобы к нему также можно было получить доступ с помощью 'loadLastBtn_Click', а затем просто' firstNameTxt.Text = s1 [0]; 'и т. д. – sab669

ответ

0

Ну, самый распространенный способ сделать это без какой-либо жесткой реализации - написать все ваши переменные с помощью;; между ними в файле. Затем прочитайте его из файла и повторно назначить его в свои элементы формы, когда пользователь нажимает вниз button.Check это руководство к тому, как писать в файл:

https://msdn.microsoft.com/en-us/library/8bh11f1k.aspx

Я приведу простой пример:

Например, моя форма состоит из имени пользователя и пароля TextFields. После того, как пользователь ввел их и нажал логин, я сохраню их в файл для входа в систему в следующий раз, и этот метод сохранит его.

public void save(){ 
String username = txtUsername.Text; 
String password = txtPassword.Text; 
File.WriteAllText(path, username + ";" + password); 
} 

public void load(){ 
String parameters = File.ReadAllText(path); 
String[] splitted = parameters.split(';'); 
txtUsername.Text = splitted[0]; 
txtPassword.Text = splitted[1]; 
} 
0

Я бы предложил создать «POCO» (обычный старый объект C#) или структуру, которая будет хранить ваши данные. Если вы хотите сохранить его, просто выполните сериализацию на диск (либо с помощью MS Serialization (более here, либо с использованием метода сериализации JSON (более here).
Таким образом, вы не можете беспокоиться о том, что пользователь мог ввести (меньше забот о дезинфекции данных и уверенности в том, что он не использовал ваш escape-символ).

Смежные вопросы