В общем, ситуация такая...
При выполнении длительной операции (получение данных с web-сервиса) должон отображаться некий контрол, уведомляющий юзера, что все в порядке и прога не повисла. Для этого я просто создал UserContol с надписью, бегающим прогрессбаром и кнопкой отмены операции.
Контрол появляется на форме следующим способом:
Проблема появилась неожиданно: с этого контрола по клавише Tab можно переместиться на контролы, лежащие ПОД _WaitingControl и активировать их, что совсем не гут
Пробовал обрабатывать событие LostFocus и Leave контрола, возвращая ему при этом фокус. Если контрол ожидания содержит кнопку (операцию можно отменить), то все нормально, фокус не теряется... а если кнопки нет, то спокойно можно табом путешествовать по контролам формы...
Подскажите, как можно запретить потерю фокуса контролом?
Здравствуйте, Nogard, Вы писали:
N>Если контрол ожидания содержит кнопку (операцию можно отменить), то все нормально, фокус не теряется... а если кнопки нет, то спокойно можно табом путешествовать по контролам формы...
Можно сделать вторую кнопку, которая вообще ничего не делает, и поместить её слева или сверху за нулевой границей контрола, чтобы она была не видна.
Ещё можно попробовать не устанавливать ширину высоту и прочее, а установить свойство Dock контрола в Fill, может фокус тогда "поумнеет".
Насчет кнопки идея хорошая! надо попробовать
_M>Ещё можно попробовать не устанавливать ширину высоту и прочее, а установить свойство Dock контрола в Fill, может фокус тогда "поумнеет".
Дело в том, что на форме могут быть другие контролы, "придоченные" к верхней\нижней\левой\правой границе формы... если поставить Dock = DockStyle.Fill, то ждущий контрол будет просто посерединке висеть
Здравствуйте, Nogard, Вы писали:
N>В общем, ситуация такая... N>При выполнении длительной операции (получение данных с web-сервиса) должон отображаться некий контрол, уведомляющий юзера, что все в порядке и прога не повисла. Для этого я просто создал UserContol с надписью, бегающим прогрессбаром и кнопкой отмены операции. N>Контрол появляется на форме следующим способом:
Здравствуйте, Aen Sidhe, Вы писали:
AS>Чем модальные окна не устраивают?
Модальные окна не устраивают потому, что концепция приложения подразумевает выполнение длительных операций в фоне... если бы этого не было, то и WaitingControl не понадобился...
А тут надо чтобы открыл одно окно, запустил, например, поиск, открыл другое окно, запустил еще один поиск... итд...
Здравствуйте, Nogard, Вы писали:
N>В общем, ситуация такая... N>При выполнении длительной операции (получение данных с web-сервиса) должон отображаться некий контрол, уведомляющий юзера, что все в порядке и прога не повисла. Для этого я просто создал UserContol с надписью, бегающим прогрессбаром и кнопкой отмены операции. N>Контрол появляется на форме следующим способом:
N>
N>Проблема появилась неожиданно: с этого контрола по клавише Tab можно переместиться на контролы, лежащие ПОД _WaitingControl и активировать их, что совсем не гут
N>Пробовал обрабатывать событие LostFocus и Leave контрола, возвращая ему при этом фокус. Если контрол ожидания содержит кнопку (операцию можно отменить), то все нормально, фокус не теряется... а если кнопки нет, то спокойно можно табом путешествовать по контролам формы...
N>Подскажите, как можно запретить потерю фокуса контролом?
N>P.S. Используются компоненты DevExpress
Посмотрите в сторону ErrorProvider. Возможно концепция подойдет для Вашего случая.