Столкнулся со странной ошибкой. Есть кнопка button, и событие Click для неё. В обработчике события Click мы делаем следующее:
static Button ok = new Button();
static TextBox tb = new TextBox();
private void button3_Click(object sender, EventArgs e)
{
tb.Width = 60;
tb.Height = 20;
tb.Location = new Point(214, 115);
Controls.Add(tb); //добавляем TextBox на форму
ok.Width = 60;
ok.Height = 20;
ok.Location = new Point(214, 135);
ok.Text = "OK";
ok.Click += click; //событие Click для кнопки
Controls.Add(ok); //добавляем кнопку
}
Ну тут мы просто добавляем на форму TextBox и кнопку. А дальше в click мы делаем следующее:
int result;
if (Int32.Parse(tb.Text) != 9) //входная строка имела неверный формат
result = Int32.Parse(tb.Text) - 1;
else
result = 0;
//мой код, полный тайн и загадок (tb тут я не трогаю)
Controls.Remove(ok);
tb.Text = "";
Controls.Remove(tb);
Но на 2 строке ошибка "Входная строка имела неверный формат. Причём, эта ошибка вылетает в случайный момент, когда я повторяю эти действия (нажимаю на button, ввожу число, нажимаю на ok). Что делаю не так?
По нажатию на button3_Click вы добавляете назад на форму тот же текстбокс tb и ту же кнопку ok. И каждый раз дополнительно подписываетесь на ok.Click. Каждая дополнительная подписка вызывает еще одно срабатывание обработчика при нажатии.
В первый раз ваш код click вызывается один раз. Выполняется
click
Int32.Parse(tb.Text)
tb.Text = "";
Второй раз клик на кнопку вызывает метод click два раза подряд (т.к. код код button3_Click вызвался дважды, и строка ok.Click += click
выполнилась дважды)
click
Int32.Parse(tb.Text)
tb.Text = "";
click
Int32.Parse(tb.Text) <-- падает
tb.Text = "";
Фикс - не использовать повторно объекты ok / tb, а создавать новый текстбокс и новую кнопку при каждом нажатии на button3:
static Button ok;
static TextBox tb;
private void button3_Click(object sender, EventArgs e)
{
ok = new Button();
tb = new TextBox();
tb.Width = 60;
tb.Height = 20;
tb.Location = new Point(214, 115);
Controls.Add(tb); //добавляем TextBox на форму
ok.Width = 60;
ok.Height = 20;
ok.Location = new Point(214, 135);
ok.Text = "OK";
ok.Click += click; //событие Click для кнопки
Controls.Add(ok); //добавляем кнопку
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Возникла проблема, не могу подключить библиотеку к своему проектуВ ссылках проекта она не появляется
Есть такой файл TXT (картинка ниже)Мне нужно как то сделать так, чтобы в базу DATAGRIDVIEW записывалась строка, у которой начало строки начинается...