Здравтсвуйте !
Если коротко, то наблюдается странное поведение забинденых контролов в MdiChild окнах. Если не сложно, попробуйте воспроизвести это дело, и может дадите какой-нибудь совет.
Здесь полный код тестового приложения.
Итак, как воспроизвести.
1. Создаём проект C# Windows Forms Application, добавляем в него ещё одну форму Form2.
2. В Form1 устанавливаем IsMdiContainer = true. Добавляем MainMenu, в него Добавляем один (это не важно) айтем. Пишем в обработчике OnClick этого айтема.
Form2 f = new Form2();
f.MdiParent = this;
f.Show();
3. Идёт в дизайнер Form2. Добавляем Untyped DataSet, в него добавляем одну таблицу, в неё две колонки. На форму кидаем 2 текстбокса, биндим их к 1-й и второй колонке соответственно.
4. Пишем для Form2 обработчик на событие Load
DataRow r = dataSet1.Tables[0].NewRow();
dataSet1.Tables[0].Rows.Add(r);
4. Пишем для Form2 обработчик на событие Closing:
dataSet1.Tables[0].Rows[0].EndEdit();
if(MessageBox.Show(this, "???", "", MessageBoxButtons.YesNo)
!=DialogResult.Yes)
{
e.Cancel = true;
}
Теперь как воспроизвести глюк.
Запускаем приложение, тыкаем 4 раза на меню, чтобы появилось 4 формы Form2.
Заполняем последнюю появившуюся форму, закрываем её, говорим "Yes" (или "да").
В активной форме опять заполняем текстбоксы, и пытаемся закрыть её.
Во тут-то, когда вылезает MessageBox, у меня из первого текстбокса пропадает текст.
Что делать ???
Nu dlja nachala rekomenduju inicializirivat' sozdanije novoj stroki ne cherez "hack code", a, po-chelovecheski, cherez CurrencyManager.
—
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, Пингвин, Вы писали:
Замени
dataSet1.Tables[0].Rows[0].EndEdit();
на
this.BindingContext[dataSet1,"Table1"].EndCurrentEdit();
... << RSDN@Home 1.1.4 beta 6a rev. 436>>