Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фокус в форме 
:(
    Опции темы
stashe
Дата 22.5.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 5.1.2007
Где: Донецк

Репутация: 1
Всего: 1



Как назывется свойство, при котором фокус форме передается только если клик происходит по верхней области формы (шапки), а не по рабочей области??
PM   Вверх
marcusmae
Дата 23.5.2008, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



stashe, такого свойства нет.

На сколько я знаю, окно не может прямо контролировать стандартную "шапку", потому что ею занимается система. Впрочем, приложение может вообще не показывать стандартную шапку и/или создать свой собственный заголовок и делать с ним что угодно, как, например, M$ Office 2007 со своей легендарной кнопкой Ribbon. В любом случае, всё, что может произойти с "шапкой" уловимо через оконные сообщения (Windows Messages). По ссылке приведён некоторый список кодов сообщений. Если возможно их использовать для решения Ваших задач, то нужно будет перегрузить метод формы под названием WndProc, примерно так :

Код

const int WM_NCLBUTTONDOWN = 0x00A1;
const int HTCLOSE = 20;

protected override void WndProc(ref Message m)
{
if ( m.Msg == WM_NCLBUTTONDOWN &&
m.WParam.ToInt32() == HTCLOSE )
{
Console.WriteLine( "X pressed");
}
base.WndProc (ref m);
}


С помощью этой же перегрузки можно исследовать, какие сообщения проходят через обработчик при тех или иных действиях. В данном случае, например, словить WM_ACTIVATE и проанализировать координаты мыши относительно клиентской области окна. Может, можно проще : вместо WM_ACTIVATE использовать Control.GotFocus или Form.Activated.


Это сообщение отредактировал(а) marcusmae - 23.5.2008, 00:43


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
stashe
Дата 23.5.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 5.1.2007
Где: Донецк

Репутация: 1
Всего: 1



так в определенный момент в программе, изменить фокус можно только клацнув по загаловку формы, а не по любой ей области...хз в чем дело smile 

я отображаю форму с графиком, потом диалог выбора файла, в принципе и все...после этот глюк
PM   Вверх
marcusmae
Дата 24.5.2008, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



stashe, код в студию.


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.