У меня есть элемент управления, чей родитель является ScrollableControl
. Как найти часть элемента управления, который на самом деле отображается пользователю? Оба прямоугольные - в Регионе нет смешного дела.Как найти видимую часть элемента управления?
ответ
AutoScrollPosition представляет местоположение прямоугольника отображения прокручиваемого элемента управления. Полученные значения координат X и Y отрицательны, если элемент управления прокручивается от его исходного положения (0,0). Когда вы устанавливаете это свойство, вы всегда должны назначать положительные значения X и Y, чтобы установить положение прокрутки относительно начальной позиции. Например, если у вас есть горизонтальная полоса прокрутки и вы устанавливаете x и y на 200, вы перемещаете прокрутку 200 пикселей вправо; если вы затем установите x и y на 100, прокрутка появится, чтобы перейти налево на 100 пикселей, потому что вы устанавливаете его на 100 пикселей от начальной позиции. В первом случае AutoScrollPosition возвращает {-200, 0}; во втором случае он возвращает {-100,0}.
Источник: MSDN: ScrollableControl.AutoScrollPosition Property
Я думаю, что метод GetVisibleRectangle я написал ниже, что вы запрашиваете. Последовательные пробеги это с прокруткой дали следующие результаты, как контроль был прокручивается:
- {Х = 0, Y = 0, ширина = 0, высота = 0} - Button4 был прокручивается вне поля зрения. Обратите внимание, что здесь значение
Rectangle.Empty
. - {X = 211, Y = 36, ширина = 25, высота = 13} - кнопка4 была прокручена, чтобы был вид сверху в верхнем левом углу
- {X = 161, Y = 36, ширина = 75, высота = 13 } - Button4 был прокручивается так, чтобы верхняя половина и вся ширина была видна
- {Х = 161, Y = 26, ширина = 75, высота = 23} - Button4 был прокручивается, чтобы быть полностью видимым
Обратите внимание, как в дополнение к изменениям ширины и высоты X и Y также изменяются при прокрутке.
Источник:
private void button1_Click(object sender, EventArgs e)
{
Rectangle r = GetVisibleRectangle(this.panel1, button4);
System.Diagnostics.Trace.WriteLine(r.ToString());
}
public static Rectangle GetVisibleRectangle(ScrollableControl sc, Control child)
{
Rectangle work = child.Bounds;
work.Intersect(sc.ClientRectangle);
return work;
}
Отличный! У меня есть только одно предложение, используйте 'child.Bounds.IntersectsWith (sc.ClientRectangle)', если вы хотите знать только о ребенке в «области обзора» элемента управления. – Cipi
Следующая ссылка мощь помогает решить эту проблему http://www.trace-solution.com/2012/06/how-to-get-visibleviewable-area-of-user.html.
Не могли бы вы добавить короткую выдержку, чтобы ответ по-прежнему был полезен, если ссылка умирает? –
@ S.L.Barth По иронии судьбы, подобное * имеет * умер. Отличный пример. – Bob
Было бы неплохо, если бы была выдержка .. :( – AnotherUser
- 1. Определить видимую область элемента управления
- 2. Определить видимую часть элемента с переполнением
- 3. Найти видимую высоту сНа элемента при прокрутке
- 4. Как определить видимую область обрезанного элемента управления WPF?
- 5. Держите ДИВУ вертикально по центру в видимую часть родительского элемента
- 6. показать только видимую часть списка
- 7. найти видимую кнопку
- 8. Как скрыть часть элемента управления WPF
- 9. Найти следующую видимую строку
- 10. Найти положение элемента управления относительно другого управления
- 11. . NET: Картина (обрезка) - только часть элемента управления?
- 12. Google Maps вычисляет видимую часть карты.
- 13. Найти видимую высоту текстового поля
- 14. iOS получить видимую часть изображения для UIImageView
- 15. Как сообщить WPF о том, чтобы обрабатывать «Padding» моего элемента управления как часть элемента управления?
- 16. Как найти ClientId элемента управления в Listview?
- 17. Как найти идентификатор перетаскиваемого элемента управления
- 18. Как найти ручку внутри элемента управления?
- 19. Как найти интерфейсы элемента управления ActiveX?
- 20. Как найти видимую область WPF RichTextBox?
- 21. Какие события я могу использовать, чтобы уведомить элемент управления, что его часть оставила видимую область экрана?
- 22. Найти первую видимую строку таблицы в CSS
- 23. Как докровать нижнюю часть элемента управления A до местоположения элемента управления с переменным размером B
- 24. Найти владеющую Часть элемента узла с docx4j
- 25. Использование FindControl найти содержимое элемента управления HTML
- 26. Как создать оверлейную часть элемента управления в Winforms C#?
- 27. Как отображать только часть элемента управления путем скрытия \ обрезки?
- 28. Как можно наложить фоновый рисунок на видимую часть изображения PNG?
- 29. Как удалить часть элемента?
- 30. Скопируйте видимую страницу веб-браузера
Почему вы хотите знать? Обычно лучше объяснить, что вы в конечном итоге пытаетесь выполнить; часто у кого-то может возникнуть идея, которая не отвечает на ваш конкретный вопрос, но дает вам результат, который вы хотели. –