Блокировка фокуса на контроле
От: Nogard Россия  
Дата: 13.04.07 22:04
Оценка:
В общем, ситуация такая...
При выполнении длительной операции (получение данных с web-сервиса) должон отображаться некий контрол, уведомляющий юзера, что все в порядке и прога не повисла. Для этого я просто создал UserContol с надписью, бегающим прогрессбаром и кнопкой отмены операции.
Контрол появляется на форме следующим способом:

_WaitingControl.Left = 0;
_WaitingControl.Top = 0;
_WaitingControl.Width = Width;
_WaitingControl.Height = Height;
_WaitingControl.BringToFront();


Проблема появилась неожиданно: с этого контрола по клавише Tab можно переместиться на контролы, лежащие ПОД _WaitingControl и активировать их, что совсем не гут

Пробовал обрабатывать событие LostFocus и Leave контрола, возвращая ему при этом фокус. Если контрол ожидания содержит кнопку (операцию можно отменить), то все нормально, фокус не теряется... а если кнопки нет, то спокойно можно табом путешествовать по контролам формы...

Подскажите, как можно запретить потерю фокуса контролом?

P.S. Используются компоненты DevExpress
Re: Блокировка фокуса на контроле
От: _Mihail Россия  
Дата: 14.04.07 02:29
Оценка:
Здравствуйте, Nogard, Вы писали:

N>Если контрол ожидания содержит кнопку (операцию можно отменить), то все нормально, фокус не теряется... а если кнопки нет, то спокойно можно табом путешествовать по контролам формы...


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

Ещё можно попробовать не устанавливать ширину высоту и прочее, а установить свойство Dock контрола в Fill, может фокус тогда "поумнеет".
Re[2]: Блокировка фокуса на контроле
От: Nogard Россия  
Дата: 14.04.07 08:27
Оценка:
Насчет кнопки идея хорошая! надо попробовать

_M>Ещё можно попробовать не устанавливать ширину высоту и прочее, а установить свойство Dock контрола в Fill, может фокус тогда "поумнеет".


Дело в том, что на форме могут быть другие контролы, "придоченные" к верхней\нижней\левой\правой границе формы... если поставить Dock = DockStyle.Fill, то ждущий контрол будет просто посерединке висеть
Re: Блокировка фокуса на контроле
От: Aen Sidhe Россия Просто блог
Дата: 14.04.07 16:53
Оценка:
Здравствуйте, Nogard, Вы писали:

N>В общем, ситуация такая...

N>При выполнении длительной операции (получение данных с web-сервиса) должон отображаться некий контрол, уведомляющий юзера, что все в порядке и прога не повисла. Для этого я просто создал UserContol с надписью, бегающим прогрессбаром и кнопкой отмены операции.
N>Контрол появляется на форме следующим способом:

Чем модальные окна не устраивают?
С уважением, Анатолий Попов.
ICQ: 995-908
Re[2]: Блокировка фокуса на контроле
От: Nogard Россия  
Дата: 20.04.07 10:26
Оценка:
Здравствуйте, Aen Sidhe, Вы писали:

AS>Чем модальные окна не устраивают?


Модальные окна не устраивают потому, что концепция приложения подразумевает выполнение длительных операций в фоне... если бы этого не было, то и WaitingControl не понадобился...
А тут надо чтобы открыл одно окно, запустил, например, поиск, открыл другое окно, запустил еще один поиск... итд...
Re: Блокировка фокуса на контроле
От: Stuw  
Дата: 20.04.07 12:50
Оценка:
Здравствуйте, Nogard, Вы писали:

N>В общем, ситуация такая...

N>При выполнении длительной операции (получение данных с web-сервиса) должон отображаться некий контрол, уведомляющий юзера, что все в порядке и прога не повисла. Для этого я просто создал UserContol с надписью, бегающим прогрессбаром и кнопкой отмены операции.
N>Контрол появляется на форме следующим способом:

N>
N>_WaitingControl.Left = 0;
N>_WaitingControl.Top = 0;
N>_WaitingControl.Width = Width;
N>_WaitingControl.Height = Height;
N>_WaitingControl.BringToFront();
N>


N>Проблема появилась неожиданно: с этого контрола по клавише Tab можно переместиться на контролы, лежащие ПОД _WaitingControl и активировать их, что совсем не гут


N>Пробовал обрабатывать событие LostFocus и Leave контрола, возвращая ему при этом фокус. Если контрол ожидания содержит кнопку (операцию можно отменить), то все нормально, фокус не теряется... а если кнопки нет, то спокойно можно табом путешествовать по контролам формы...


N>Подскажите, как можно запретить потерю фокуса контролом?


N>P.S. Используются компоненты DevExpress


Посмотрите в сторону ErrorProvider. Возможно концепция подойдет для Вашего случая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.