Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > заблокировать крестик на форме


Автор: romeobugulma 15.10.2007, 11:11
подскажите пожалуйста заблокировать крестик на форме. (C#)
Заранее спасибо.

Автор: 1stain 15.10.2007, 11:38
как заблокировать не знаю, видимо надо мутить через API, но может сойдет e.Cancel = true в обработчике события Form.Closing ?

Автор: zaver 15.10.2007, 13:31
Цитата(1stain @ 15.10.2007,  11:38)
как заблокировать не знаю, видимо надо мутить через API, но может сойдет e.Cancel = true в обработчике события Form.Closing ?

да, присвоение e.Cancel = true работает, проверял. но если .Net Framework версии выше первой, то лучше использовать Form.FormClosing, т.к. он более корректно работает. 
Form.Closing во 2ом фрейворке специально спрятали аттрибутами от Intellisence и Properties Editor.

Добавлено через 12 минут и 12 секунд
в таком случае надо делать так:
Код

//флаг который разрешает форме закрываться
 bool canClose = false;


        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!canClose) e.Cancel = true;

        }

//только по нажатию этой кнопки можно закрываться
        private void button1_Click(object sender, EventArgs e)
        {
            canClose = true;
            Close();
        }

можно еще поиграться с параметром e.CloseReason, если например хочешь разрешить пользователю закрывать форму из диспетчера задач, или чтобы форма закрывалась при выгрузки Винды
Код

if (e.CloseReason != CloseReason.UserClosing) e.Cancel = false;

Автор: Bogdan1024 15.10.2007, 15:42
Можно поменять WindowStyle окошка чтобы его не было видно smile

Автор: 1stain 15.10.2007, 16:02
Цитата(Bogdan1024 @  15.10.2007,  15:42 Найти цитируемый пост)
Можно поменять WindowStyle окошка чтобы его не было видно 

а лучше вапсче его не создавать  smile 

Автор: tol05 15.10.2007, 16:10
Переопределите CreateParams в форме и наслаждайтесь
Код

private const int CP_NOCLOSE_BUTTON = 0x200;
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams myCp = base.CreateParams;
                myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON;
                return myCp;
            }
        } 

 smile 

Автор: kurzon 17.10.2007, 19:04
Убрать или заблокировать?

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