none
Ссылка на объект C# RRS feed

  • Вопрос

  • Здравствуйте. Вопрос наверное для кого то простейший.. В общем есть глобальный класс Program.cs, в нем определяется "глобальная переменная" подключения к БД

    public static FbConnection fb1;

    fb1 = new FbConnection(fb_con.ToString());

    В каждой моей форме есть свойство, подключения к этой базе

     FbConnection conn = Program.fb1; 

    Также есть форма настроек приложения, в которой это подключение можно изменить

    FbConnectionStringBuilder fb_con = new FbConnectionStringBuilder();
                fb_con.Charset = encodingtextBox.Text; //используемая кодировка
                fb_con.UserID = logintextBox.Text;
                fb_con.Password = passwordtextBox.Text;//пароль
                fb_con.Database = pathtextBox.Text;//путь к файлу базы данных
                fb_con.ServerType = 0;
                Program.fb1 = new FbConnection(fb_con.ToString());

    Предположим у меня открыто 3 формы и я хочу изменить настройки подключения. Как сделать чтобы при изменении этой глобальной переменной изменились свойства подключения всех открытых форм(тоесть получается прямая ссылка на объект Program.fb1) ? Может крышечку где-то поставить надо, подскажите пожалуйста.

    21 апреля 2014 г. 6:24

Ответы

  • Вот ссылка на старый объект у Вас и сохраняется. Заведите в Program открытое статическое свойство, возвращающее текущее значение поля fb1 и обращайтесь из всех форм непосредственно к нему (без создания новых ссылок). Тогда само поле можно закрыть. Ну и событие (как было предложено выше) тоже не помешает.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа DenisShvatskiy 22 апреля 2014 г. 11:05
    21 апреля 2014 г. 10:28

Все ответы

  • Она и так должна меняться, так как значение статической переменной одно на всё приложение. Использовать открытые поля – плохой дизайн приложения. Если вам надо модифицировать значения ваших текстовых полей, при изменении данного объекта, то тут нужно подключать события.

    Сделаем содержимое сообщества лучше, вместе!

    21 апреля 2014 г. 6:41
    Модератор
  • самое забавное что не меняется)) потому вопрос и задал))
    21 апреля 2014 г. 6:57
  • А как вы ссылаетесь на эту переменную из других форм?

    Сделаем содержимое сообщества лучше, вместе!

    21 апреля 2014 г. 7:07
    Модератор
  • FbConnection conn = Program.fb1;  при создании формы.
    21 апреля 2014 г. 8:20
  • Вот ссылка на старый объект у Вас и сохраняется. Заведите в Program открытое статическое свойство, возвращающее текущее значение поля fb1 и обращайтесь из всех форм непосредственно к нему (без создания новых ссылок). Тогда само поле можно закрыть. Ну и событие (как было предложено выше) тоже не помешает.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа DenisShvatskiy 22 апреля 2014 г. 11:05
    21 апреля 2014 г. 10:28