ConfigurationManager обрабатывает пароли между двумя формами - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть две Windows Forms FormA и FormB в одном проекте .NET Framework 3.5.

Основная функция Приложения (помещенная в Programm.cs) запускается FormB после FormA остановки:

Application.Run(new FormA());
Application.Run(new FormB());

FormA делает следующее, чтобы FormB установил AppSetting Password

System.Configuration.Configuration config =
          ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

config.AppSettings.Settings.Add("password", textBoxPassword.Text);

и ничего больше :) Я не хочу сохранять пароль в файле app.config.

Хорошо, приложение запускается, FormA () подходит и закрывается, FormB () подходит, пытается прочитать ConfigurationSettings.AppSettings["Password"];, что NULL.

Как я могу сделать так, чтобы я получил значение, установленное в FormA вместо NULL?

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Если вы хотите обмениваться данными между формами, вы можете просто создать класс со свойством public static и использовать его для хранения своего пароля.

public static class SharedData
{
    public static string Password { set; get; }

    // ... other shared properties

}
1 голос
/ 15 февраля 2012

Сработает следующее - даже если вы загрузите конфигурацию, как вы делали ранее в форме:

ConfigurationSettings.AppSettings["password"] = textboxPassword.Text;

в форме A

и

string pwd = ConfigurationSettins.AppSettings["password"];

в FormB

Если вы не против связать свои формы, есть другие варианты, например, создать конструктор для FormB, который принимает пароль в качестве параметра, и вызвать

new FormB(this.textboxPassword.Text).Show(); 

изв рамках переопределения метода OnClosing() в FormA.

- мой предыдущий ответ не учитывал тот факт, что вы не хотите сохранять изменения.

...