Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > tabpage. сделать так, чтобы пользователь не


Автор: St33l 14.3.2010, 17:22
на закладке tpStart имеются текстбоксы. если пользователь что-то изменил в них, то нужно запретить ему покидать закладку, пока не сохранит.

написал такой код:

Код

            if (btnSaveIsh.Enabled)
            {
                if (MessageBox.Show("Изменения не были сохранены. Сохранить?", "Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK)
                {
                    Savedata();
                }
                else
                {
                    TabControl.SelectTab(tpStart);
                }
            }


Закинул его в обработку события Leave для tpStart. Но почему-то когда пользователь нажимает "отмена" в диалоговом окне, то его не перекидывает обратно на tpStart, хотя блок else обрабатывается.

Автор: Certain 1.4.2010, 17:13
1. обрабатываем событие Selecting у TabControl`a

Код

        private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
        {
           if (MessageBox.Show("Изменения не были сохранены. Сохранить?", "Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK)
                {
                    MessageBox.Show("ДЕЙСТВИЕ");
                }
                else
                {
                    e.Cancel = true;
                }
        }


2. аналогично обработать событие закрытия формы FormClosing

Код

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (tabControl1.SelectedIndex == 0)
            {
                if (MessageBox.Show("Изменения не были сохранены. Сохранить?", "Внимание", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK)
                {
                    MessageBox.Show("ДЕЙСТВИЕ");
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)