Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов одного конструктора из другого 
:(
    Опции темы
N1ko
Дата 13.4.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 30.12.2007
Где: Киев

Репутация: нет
Всего: нет



Здравствуйте. Есть следующая ситуация. На форме есть кнопка Button1, при нажатии на котоую выполняется следующий код.
       
Код

 public OracleDB DB;
        private void button1_Click(object sender, EventArgs e)
        {
            DB = new OracleDB();
        }
        //Этот код выполняется при нажатии на вторую кнопку
        private void button2_Click(object sender, EventArgs e)
        {
            ///!!! Вот тут говорит, что DB.password равен "", а мне нужно что бы оно отображало значение, введёное на форме _formLogIn
            MessageBox.Show(DB.password);
        }

 Где OracleDB - класс для работы с соответствующей базой данных.
Конструктор выгялдит следующим образом.

Код

 public OracleDB()
        {
            FormLogIn _formLogIn = new FormLogIn(this);
            _formLogIn.Show();
        }


 где FormLogIn - форма для авторизации. На этой форме есть кнопка подтверждения, код для которой приведён ниже. Он вызывает конструктор того же класса только с параметрами: пароль и логин.
Код

oracleDB = new OracleDB(TextBoxUserID.Text,TextBoxPassword.Text);
 
Сам же конструктор выглядит вот как:
 
Код

public OracleDB(string UserID, string Password)
        {
            this.sUserID = UserID;
            this.sPassword = Password;
            oracleCon = new OracleConnection(ConnectionParams);
        }

В результате мне нужно, что бы изначально созданное поле DB отражало класс OracleDB, который был создан вторым конструктором. Но  он хранит в себе информацию, которая была внесена после применения первого конструктора.
Если изложеный текст не понятен, могу выложить проект. Надеюсь на Вашу помощ. 


Это сообщение отредактировал(а) N1ko - 13.4.2010, 14:07
PM MAIL ICQ   Вверх
A5uKa
Дата 13.4.2010, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 3
Всего: 16



Код

 public OracleDB()
{
            FormLogIn _formLogIn = new FormLogIn(this);
            _formLogIn.Show();
}


public virtual _formLogIn.OnChangePasswordAndAccountName(...)
{
            OracleDB.sUserID = UserID;
            OracleDB.sPassword = Password;
            OracleDB.oracleCon = new OracleConnection(ConnectionParams);
}


или ...

Код

        private void button1_Click(object sender, EventArgs e)
        {
           DB = new  _formLogIn.GetOracleDB();
        }

............
    GetOracleDB(....)
    {
         oracleDB = new OracleDB(TextBoxUserID.Text,TextBoxPassword.Text);
         return oracleDB 
     }


А возвращать в конструкторе OracleDB OracleDB как-то неправильно.
Элементарно потому, что у него нет возвращаемого типа, потому, что он возвращает свой класс, на то он собственно и конструктор.
PM   Вверх
N1ko
Дата 13.4.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 383
Регистрация: 30.12.2007
Где: Киев

Репутация: нет
Всего: нет



Со вторым вариантом понятно. А какая мысль заложена в первый?  Создать метод, который будет просто присваивать значения определённым полям, не вызывая конструктор? И почему он виртуальный?


Это сообщение отредактировал(а) N1ko - 13.4.2010, 15:04
PM MAIL ICQ   Вверх
A5uKa
Дата 13.4.2010, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 3
Всего: 16



1) Да
2) Да просто так
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0652 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.