MahmoudOmar Ответов: 1

Необработанное исключение типа "system.stackoverflowexception" произошло в system.data.dll


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

я знаю, что означает это исключение, но как я заставляю этот код работать,

private void FRM_Main_FormClosing(отправитель объекта, FormClosingEventArgs e)

s = " вставить в LoginAndOutDate(user_name, Logout_Date) ";
S = s + " значения (@user_name, CURRENT_TIMESTAMP) ";

if (con. State == ConnectionState.Закрытый)
против.Открыть();

sCommand = new SqlCommand(s, con);
скоманд.Параметры.AddWithValue ("@user_name", textBox_ForName. Text);
скоманд.Метод executenonquery();

if (con. State == ConnectionState.Открыть)
против.Закрывать();

этот.Закрывать();

этот.Рефтоформлогин.Покажите();

}

Что я уже пробовал:

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

1 Ответов

Рейтинг:
9

0x01AA

Это потому что вы зовете

this.Close();
В вашем
FRM_Main_FormClosing
который снова запускает FRM_Main_FormClosing ... который называет это.Close() снова,....

Вывод: Удалить this.Close() в вашем обработчике событий FRM_Main_FormClosing.


MahmoudOmar

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

0x01AA

Добро пожаловать. Ваш новый вопрос: Извините, я не понимаю, в чем проблема. В случае, если вы вставляете logout allready в ButtonLogout, вы должны записать эту информацию в нечто вроде private bool logoutLogged, который вы инициализируете в false и устанавливаете его в true в ButtonLogout. В FormClose вы можете проверить, зарегистрирован ли выход из системы или нет. Но у меня такое чувство, что я не совсем правильно понимаю этот второй вопрос :)