Tôi có quyền kiểm soát có cha mẹ là ScrollableControl
. Làm cách nào để tìm phần kiểm soát thực sự hiển thị với người dùng? Cả hai đều là hình chữ nhật - không có doanh nghiệp vui nhộn với Khu vực.Làm cách nào để tìm phần hiển thị của điều khiển?
Trả lời
AutoScrollPosition thể hiện vị trí của hình chữ nhật hiển thị của điều khiển có thể cuộn. Các giá trị tọa độ X và Y được lấy ra là âm nếu điều khiển đã cuộn ra khỏi vị trí bắt đầu của nó (0,0). Khi bạn đặt thuộc tính này, bạn phải luôn gán giá trị X và Y dương để đặt vị trí cuộn tương đối so với vị trí bắt đầu. Ví dụ: nếu bạn có thanh cuộn ngang và bạn đặt x và y là 200, bạn di chuyển 200 pixel sang bên phải; nếu bạn đặt x và y thành 100, cuộn sẽ xuất hiện để nhảy sang trái 100 pixel, bởi vì bạn đang đặt nó cách vị trí bắt đầu 100 pixel. Trong trường hợp đầu tiên, AutoScrollPosition trả về {-200, 0}; trong trường hợp thứ hai, nó trả về {-100,0}.
Tôi nghĩ rằng phương pháp GetVisibleRectangle tôi viết dưới đây là những gì bạn đã yêu cầu. Các lần chạy liên tiếp này với thao tác cuộn sẽ mang lại kết quả sau khi điều khiển được cuộn:
- {X = 0, Y = 0, Chiều rộng = 0, Chiều cao = 0} - button4 được cuộn ra ngoài tầm nhìn. Lưu ý rằng giá trị ở đây là
Rectangle.Empty
. - {X = 211, Y = 36, Chiều rộng = 25, Chiều cao = 13} - nút 4 được cuộn để góc trên bên trái hiển thị
- {X = 161, Y = 36, Chiều rộng = 75, Chiều cao = 13 } - button4 được cuộn để nửa trên và toàn bộ chiều rộng là có thể nhìn thấy
- {X = 161, Y = 26, width = 75, Height = 23} - button4 được cuộn là hoàn toàn có thể nhìn thấy
Lưu ý cách ngoài các thay đổi Chiều rộng và Chiều cao mà X, Y cũng thay đổi bằng cách cuộn.
Nguồn:
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;
}
Excelent! Tôi chỉ có một gợi ý, sử dụng 'child.Bounds.IntersectsWith (sc.ClientRectangle)' nếu bạn chỉ muốn biết là đứa trẻ trong "khu vực xem" của điều khiển. – Cipi
Sức mạnh liên kết sau đây sẽ giúp giải quyết vấn đề này http://www.trace-solution.com/2012/06/how-to-get-visibleviewable-area-of-user.html.
Bạn có thể thêm đoạn trích ngắn để câu trả lời vẫn hữu ích nếu liên kết bị chết? –
@ S.L.Barth Trớ trêu thay, giống như * đã chết *. Ví dụ tuyệt vời. – Bob
Sẽ rất tuyệt nếu có đoạn trích .. :( – AnotherUser
- 1. Sails.js - Làm cách nào để hiển thị một phần từ bộ điều khiển?
- 2. Làm thế nào để tìm ra khi nào điều khiển được hiển thị cho người dùng?
- 3. Làm cách nào để hiển thị thêm số thập phân trong bảng điều khiển đầu ra?
- 4. Hiển thị/Ẩn cửa sổ bảng điều khiển của ứng dụng giao diện điều khiển C#
- 5. Điều khiển hiển thị trên một bảng điều khiển khác
- 6. Có cách nào để hiển thị các điều khiển WPF trên đầu trang của điều khiển wpf WebBrowser không?
- 7. Làm cách nào để hiển thị thanh cuộn trên điều khiển PictureBox?
- 8. Hiển thị chế độ xem của bộ điều khiển khác
- 9. Làm cách nào để hiển thị html (được xử lý bằng Javascript) trong điều khiển WebBrowser?
- 10. Làm thế nào để hiển thị flatlist sử dụng điều khiển điện thoại LongListSelector của WP8
- 11. Trình điều khiển PDO_SQLITE không hiển thị .. phải làm gì?
- 12. ASP.NET làm cách nào để hiển thị điều khiển cho HTML?
- 13. Làm cách nào để hiển thị 2 phần cạnh nhau?
- 14. Làm cách nào để hiển thị bàn điều khiển từ xa ncurses?
- 15. Làm cách nào để hiển thị gợi ý cho điều khiển bị vô hiệu hóa?
- 16. Làm cách nào để hiển thị điều khiển Người dùng từ ashx hoặc webservice?
- 17. Làm cách nào để hiển thị nhật ký NLog trong điều khiển WPF?
- 18. "Khu vực hiển thị" của một điều khiển?
- 19. Làm cách nào để hiển thị đầu ra của lệnh bash Chef Opscode trong bảng điều khiển của tôi?
- 20. IcedTea - cách hiển thị bảng điều khiển applet ..?
- 21. Làm cách nào để bạn đặt thuộc tính "Hiển thị" của điều khiển ASP.NET từ một hàm Javascript?
- 22. Tìm hướng trên đơn vị kiểm tra phần mở rộng bộ điều khiển hiển thị một phần xem
- 23. Cách hiển thị thanh điều khiển modalviewcontroller ở trên
- 24. Cách hiển thị partials từ một Bộ điều khiển khác
- 25. Hiển thị nhiều partials trong bộ điều khiển
- 26. Làm thế nào để hiển thị một số hoạt ảnh trong khi điều khiển đang hiển thị?
- 27. Làm thế nào để thay đổi khả năng hiển thị của một điều khiển WPF từ ViewModel
- 28. thành phần delphi để hiển thị/ẩn các điều khiển trong thời gian chạy
- 29. Làm cách nào để "ẩn" các điều khiển mà điều khiển của tôi sử dụng từ hộp công cụ?
- 30. Một bộ điều khiển hiển thị bằng cách sử dụng các chế độ xem của bộ điều khiển khác
Tại sao bạn muốn biết? Nó thường là tốt hơn để giải thích những gì bạn đang cố gắng hoàn thành; thường ai đó có thể có ý tưởng không trả lời câu hỏi cụ thể của bạn nhưng đưa bạn đến kết quả bạn muốn. –