![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| StepS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 26.8.2005 Где: Днепропетровск Репутация: нет Всего: нет |
Собственно сабж !
Например TextBox перекрыт Panel как мне определить накрыть он Panel или нет ? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Проходим по коллекции Controls, смотрим у какого контрола прямоугольная область совпадает или пересекает нашу. Если нашли - проверяем с пом. метода ContolCollection.GetChildIndex, какой из контролов выводится последним (чем меньше число возвращаемое GetChildIndex, тем "выше" контрол). Если последним выводится наш контрол - значит всё нормально, т.к. он перекроет другой контрол. Иначе - наш контрол закрыт чужим контролом.
-------------------- ![]() |
|||
|
||||
| StepS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 26.8.2005 Где: Днепропетровск Репутация: нет Всего: нет |
только что попробовал - не работает! фишка вот в чем:
я сначала вывожу на форму textbox, потом поверх его вывожу panel с разными контролами. ТЕперь над panel есть кнопочка "Hide", нажимая ее у меня исчезает Panel со всеми контролами и на форме остается только textbox. Так вот в не зависимости от того скрыт ли сейчас panel у него всегда GetchildIndex - 1, а у textbox - 2. Т.е. предложенным методом я не могу определить в данный, конкретный момент у меня textbox видит пользователь или нет! не хотелось бы по нажатию на кнопку "hide" перебирать все контролы и контролы которые перекрыты ставить атрибут Visible=false. Если без этого не обойтись, то навреное придется так и сделать ! я думал у Framework есть какие-нить средства для этого ! |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Если контролы ещё и можно скрывать/показывать, то конечно нужна проверка на visible. Строку if(this.Controls.GetChildIndex(с ) < this.Controls.GetChildIndex(control)) надо заменить на if(c.Visible && this.Controls.GetChildIndex(с ) < this.Controls.GetChildIndex(control)) Вот и всё. -------------------- ![]() |
|||
|
||||
| StepS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 26.8.2005 Где: Днепропетровск Репутация: нет Всего: нет |
тоже вариант !
|
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
Если делать эту проверку только при загрузке формы и изменении видимости панели, то вообще не повлияет. -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |