Mam kontrolę, której rodzicem jest ScrollableControl
. Jak znaleźć część kontrolki widoczną dla użytkownika? Oba są prostokątne - nie ma śmiesznych interesów z regionami.Jak znaleźć widoczną część kontrolki?
Odpowiedz
AutoScrollPosition przedstawia położenie prostokąta wyświetlanego na przewijanym elemencie sterującym. Uzyskane wartości współrzędnych X i Y są ujemne, jeśli układ sterowania przewinął się z miejsca początkowego (0,0). Po ustawieniu tej właściwości zawsze należy przypisać dodatnie wartości X i Y, aby ustawić pozycję przewijania względem pozycji początkowej. Na przykład, jeśli masz poziomy pasek przewijania i ustawiasz xiy na 200, przesuwasz o 200 pikseli w prawo; jeśli następnie ustawisz xiy na 100, przewijanie pojawi się, aby przeskoczyć w lewo o 100 pikseli, ponieważ ustawiasz je w odległości 100 pikseli od pozycji początkowej. W pierwszym przypadku funkcja AutoScrollPosition zwraca wartość {-200, 0}; w drugim przypadku zwraca {-100,0}.
Myślę, że metoda GetVisibleRectangle napisałem poniżej jest czego zainteresowanie. Kolejne przebiegi to z przewijaniem uzyskano następujące wyniki jako kontrolny przewijane:
- {X = 0, Y = 0, = 0, szerokość, wysokość = 0} - Button4 była przewijana z widoku. Zauważ, że ta wartość to
Rectangle.Empty
. - {X = 211, Y = 36, Szerokość = 25, Wysokość = 13} - przycisk 4 został przewinięty, więc widoczny był górny lewy róg
- {X = 161, Y = 36, Szerokość = 75, Wysokość = 13 } - Button4 został przewinięty więc górna część oraz cały szerokość była widoczna
- {X = 161, Y = 26, szerokość = 75, wysokość = 23} - Button4 został przewinięty być całkowicie widoczny
Uwaga jak oprócz zmian szerokości i wysokości zmieniono również X, Y za pomocą przewijania.
Źródło:
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;
}
Doskonała! Mam tylko jedną sugestię, użyj 'child.Bounds.IntersectsWith (sc.ClientRectangle)' jeśli chcesz tylko wiedzieć, dziecko jest w "obszarze widoku" kontrolki. – Cipi
Poniższy link siła pomaga rozwiązać ten problem http://www.trace-solution.com/2012/06/how-to-get-visibleviewable-area-of-user.html.
Czy możesz dodać krótki fragment, więc odpowiedź będzie nadal przydatna, jeśli link umrze? –
@ S.L.Barth Jak na ironię, podobnie jak * zmarł *. Świetny przykład. – Bob
Byłoby miło, gdyby był fragment ... :( – AnotherUser
- 1. Jak ukryć część kontrolki WPF?
- 2. JavaScript Najedź kursorem na widoczną część obrazu PNG
- 3. Android: jak ustawić klawiaturę zawsze widoczną?
- 4. Jak zachować kontrolę widoczną w formularzu podczas korzystania z rozdzielacza?
- 5. Jak znaleźć pozycję ekranu kontrolki w silverlight na WP7?
- 6. UILabel widoczna część tekstu
- 7. Sharepoint: jak mogę znaleźć wszystkie strony hostujące daną część internetową?
- 8. Jak zrobić ShadowCamera widoczną w three.js r73?
- 9. Jak używać kontrolki imageList
- 10. Nie można znaleźć kontrolki z identyfikatorem dla wyzwalacza w UpdatePanel
- 11. Jak ukryć część obrazu?
- 12. Jak przechwycić część kwoty
- 13. Jak usunąć część napisu?
- 14. Konwersje NodaTime (część 2). Jak?
- 15. Jak szybko wyrównać kontrolki w oknie WPF?
- 16. Zachowaj widoczną kolumnę lewą I przewijaną
- 17. WPF: Wstrzymywanie właściwości innej kontrolki w wyzwalaczu kontrolki
- 18. Uzyskaj/ustaw pierwszą widoczną linię RichTextBox
- 19. W jaki sposób utworzyć klip div z widoczną zawartością?
- 20. Jak zmienić migawkę widoczną na liście ostatnich aplikacji?
- 21. IOS jak obcinać za pomocą elipsy ostatnią widoczną linię akapitu?
- 22. jak zrobić zmienną widoczną we wszystkich widokach - tory
- 23. Persist FileUpload Wartość kontrolki
- 24. Jak stale aktualizować część strony
- 25. Jak wypełnić część obrazu kolorem?
- 26. Jak ustawić właściwość Int kontrolki w ASCX?
- 27. Jak przekierować zdarzenia myszy do innej kontrolki?
- 28. Jak uzyskać wartość z kontrolki DatePicker UWP?
- 29. Jak ujawnić właściwość Text kontrolki UserControl?
- 30. Jak zmienić kolor tła kontrolki wykresu ASP.NET?
Dlaczego chcesz wiedzieć? Zazwyczaj lepiej jest wyjaśnić, co ostatecznie próbujesz osiągnąć; często ktoś może mieć pomysł, który nie odpowiada na twoje konkretne pytanie, ale daje ci pożądany rezultat. –