2009-03-24 2 views
1

Я хочу сделать свое собственное действие при нажатии (нажмите), чтобы закрыть кнопку (X в правом верхнем углу) в сжатом каркасе. Я использую Windows Mobile 6.1.Крючок закрыть (X) в компактном каркасе appliacation

Обычно я хочу поведение по умолчанию, но иногда я хочу изменить usercontrol на текущей форме. Как я могу связаться с ним?

Спасибо!

ответ

3

Кнопка (X) не a Кнопка Close, это кнопка Smart Minimize, и вы не можете напрямую подключиться к ней (вероятно, вы получите деактивированное событие, но вы не можете отменить это) ,

Вы можете изменить свойство MinimizeButton формы на false, и оно изменится на кнопку (ok), с которой вы сможете справиться (как указывает Петрос). Вероятно, вы можете использовать IMessageFilter или подкласс для того, чтобы подключить его WinProc, чтобы также получить событие минимизации.

Смотрите также:

+0

Спасибо, я попробую изменить свойство MinimizeButton и подключить событие Close. – TcKs

1

Если я понимаю, что вы хотите сделать:

private void Form1_Closing(object sender, CancelEventArgs e) 
{ 
    e.Cancel = true; 
    //Do my own thing 
} 

Вы можете предоставить и обработчик событий для «закрытия» события формы. По e.Cancel = true вы говорите, что не хотите, чтобы форма закрывалась, а затем вы можете делать все, что хотите.

+1

Если я установил MinimizeBox = false (как писал @ctacke), это событие будет запущено. Благодарю. – TcKs

2

Функция вы ищете SHDoneButton.

Вызов его с помощью dwState из SHDB_SHOWCANCEL изменяет поведение кнопки «Смарт-минимизация», чтобы просто выдавать сообщение WM_COMMAND. Затем вам просто нужно прослушать сообщение WM_COMMAND на setting a custom WndProc.

+0

Обратите внимание на тег «.net». – ctacke

+1

Насколько мне известно, эта проблема не может быть решена с помощью чистого .NET. Соответствующие вызовы не отображаются. Ответ заключается в использовании PInvoke. Обратите внимание, что моя «настройка пользовательской WndProc» связана с сообщением C#. – jtdubs

Смежные вопросы