Изменения настроек приложения WinForms не сохраняются - PullRequest
0 голосов
/ 03 апреля 2020

В моем C# WinForm у меня есть окно настроек, которое позволяет пользователю изменять настройки подключения к базе данных. Во время разработки я установил начальные настройки, которые будут успешно подключаться к базе данных.

Я получаю доступ к этим настройкам одним из двух способов:

Либо в обозревателе решений:

enter image description here

Или в настройках приложения Проекта:

enter image description here

Однако я заметил, что если я изменю любое из значений в файле Settings.Settings, форма по-прежнему загружается со значениями, для которых я изначально установил каждое.

Для ясности: одним из параметров является сервер, который является IP-адресом. адрес. Я изначально установил его на 256.256.256.256 (фиктивный IP, конечно). Программа работала нормально и соединилась с базой данных.

Затем я изменил IP-адрес в файле Settings.Settings на 255.255.255.2, который не будет подключаться. Но когда я запускаю форму, она все еще подключается с использованием первоначально установленного IP-адреса.

В моем событии загрузки формы у меня есть это:

db connectionTest = new db();
if (!connectionTest.TestDbConnectionSettings())
{
    DialogResult diagResult = MessageBox.Show("Unable to connect to the database using the entered settings." +
        "\n" +
        "\n" +
        "Click OK to open the Connection Settings window.", "Database Connection Test Failed", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
    if(diagResult == DialogResult.OK)
    {
        frmDbConnectionInfo frm = new frmDbConnectionInfo();
        frm.Show();
    }
}

А вот метод TestDbConnectionSettings в моем Db.cs класс:

private readonly string connString = string.Format("Server = {0}; Port = {1}; User Id = {2}; Password = {3}; Database = {4};", 
        Properties.Settings.Default.serverSetting,
        Properties.Settings.Default.portSetting,
        Properties.Settings.Default.userIdSetting,
        Properties.Settings.Default.passwordSetting,
        Properties.Settings.Default.databaseSetting);

public bool TestDbConnectionSettings()
{
    try
    {
        Cursor.Current = Cursors.WaitCursor;
        using (NpgsqlConnection conn = new NpgsqlConnection(connString))
        {
            conn.Open();
            Cursor.Current = Cursors.Default;
            return true;
        }
    }
    catch
    {
        Cursor.Current = Cursors.Default;
        return false;
    }

}

Итак, должен читать из файла настроек (по крайней мере, это мое намерение), но, похоже, что - больше, по крайней мере. По догадке я поместил код в Db.cs, который устанавливает значения для connString в сам метод TestDbConnectionSettings, но это ничего не изменило.

...