Работа с формами, не сохраняет данные

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
Добрый день!

Подскажите, не получается самостоятельно разобраться. С самого утра сижу с этой проблемой.

Есть задача: вывести richтекстбокс с текстом из переменной text, изменить текст руками и нажатием на кнопку сохранить новое значение в переменную text.

У меня же пока получается сохранить новое значение только закрытием формы (через крестик), а нужно через кнопку. Как я понял, нужно прописать сохранение в действие на кнопке, но те варианты, что я находил, у меня не работают... :(

Пример кода:
C#:
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Наша форма";
F.Width=555;  //- задает ширину формы в пикселях
F.Height=700;  //- задает высоту формы в пикселях
F.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;


//создаем richтекстбокс
System.Windows.Forms.RichTextBox rtbox = new System.Windows.Forms.RichTextBox();
//указываем местоположение
rtbox.Location = new System.Drawing.Point(25,25);
//указываем размеры
rtbox.Width =200;
rtbox.Height = 300;
//крепим на форму
F.Controls.Add(rtbox);

//Устанавливаем значение
rtbox.Text=project.Variables["text"].Value;


//Кнопка 1
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
button.Image = Image.FromFile(project.Variables["Forms_button_1"].Value);//картинка на кнопке
button.Location = new System.Drawing.Point(90,480);
button.Size = new System.Drawing.Size(150, 40);
F.Controls.Add(button);
button.Click+= delegate(object sender, System.EventArgs e)
{
  project.Variables["kod"].Value = "1";
  F.Dispose();
};



//показываем форму
F.ShowDialog();

//берем введеное значение
project.Variables["text"].Value = rtbox.Text;
return rtbox.Text;
 

LaGir

Client
Регистрация
01.10.2015
Сообщения
227
Благодарностей
927
Баллы
93
У меня же пока получается сохранить новое значение только закрытием формы (через крестик), а нужно через кнопку. Как я понял, нужно прописать сохранение в действие на кнопке, но те варианты, что я находил, у меня не работают...
Нужно поместить получение текста в обработчик нажатия кнопки:
C#:
button.Click+= delegate(object sender, System.EventArgs e)
{
   project.Variables["text"].Value = rtbox.Text;  
   project.Variables["kod"].Value = "1";
   F.Dispose();
};
А вот строчки 41 и 42 убрать совсем. При нажатии кнопки форма уничтожается (строчка 32), и rtbox.Text уже не существует. Соответственно, 41 и 42 строки возвращают пустоту.
 
  • Спасибо
Реакции: Hannes и arhip1985

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
спасибо за тему, я и не знал, что можно в зенно формы делать)
 
  • Спасибо
Реакции: Hannes

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
  • Спасибо
Реакции: arhip1985

Hannes

Client
Регистрация
03.02.2016
Сообщения
527
Благодарностей
273
Баллы
63
@LaGir, спасибо огромное!
Доходил до такого варианта, но у меня выдавало ошибку. Как сейчас понял, причина была в том, что блок изменения текста был ниже блока с кнопкой. Он выдавал ошибку, а я искал её дальше. :dl:
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)