Làm cách nào để biết khi nào hình ảnh của hình tượng thay đổi?
Có sự kiện thay đổi hình ảnh không?Có sự kiện thay đổi hình ảnh cho một PictureBox Control không?
Trả lời
Trước tiên hãy đảm bảo rằng hình ảnh được tải không đồng bộ. Để làm điều này, hãy đặt WaitOnLoad property của PictureBox thành false (giá trị mặc định).
pictureBox1.WaitOnLoad = false;
Sau đó, tải hình ảnh không đồng bộ:
pictureBox1.LoadAsync("neutrinos.gif");
Tạo một event handler cho sự kiện LoadCompleted của PictureBox. Sự kiện này được kích hoạt khi hoạt động tải hình ảnh không đồng bộ được hoàn thành, hủy hoặc gây ra ngoại lệ.
pictureBox1.LoadCompleted += PictureBox1_LoadCompleted;
private void PictureBox1_LoadCompleted(Object sender, AsyncCompletedEventArgs e)
{
//...
}
Bạn có thể tìm thêm thông tin về sự kiện này trên MSDN:
http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.loadcompleted.aspx
Có những sự kiện tải nếu bạn sử dụng Load()
hoặc LoadAsync()
, nhưng không phải cho Image
tài sản. Điều này được bạn thiết lập rõ ràng (nhà phát triển) và thường nói bằng 100% quyền kiểm soát của bạn (xem chú thích bên dưới). Nếu bạn thực sự muốn mặc dù (không thực sự là một điểm, mặc dù), bạn có thể lấy được của riêng bạn UserControl
từ PictureBox
và ghi đè lên các tài sản Image
, và thực hiện xử lý sự kiện của riêng bạn.
Notation Tôi cho rằng một sự kiện bạn muốn một sự kiện để đăng ký là nếu bạn đang sử dụng một số thành phần của bên thứ ba hoặc kiểm soát thay đổi thuộc tính hình ảnh, và bạn muốn thực hiện một số loại thói quen phụ khi điều này xảy ra. Trong trường hợp này, đó là lý do để cần một sự kiện ImageChanged vì bạn không có quyền kiểm soát khi hình ảnh được đặt. Thật không may, vẫn không có cách nào để phá vỡ kịch bản này.
using System;
using System.Windows.Forms;
using System.Drawing;
namespace CustomPX
{
public class CustomPictureBox : PictureBox
{
public event EventHandler ImageChanged;
public Image Image
{
get
{
return base.Image;
}
set
{
base.Image = value;
if (this.ImageChanged != null)
this.ImageChanged(this, new EventArgs());
}
}
}
}
Bạn có thể thêm lớp này vào ToolBox và/hoặc từ mã và sử dụng sự kiện ImageChanged để bắt nếu hình ảnh được thay đổi
- 1. Làm cách nào để thay đổi hình ảnh của PictureBox?
- 2. Chuyển đổi hình ảnh trong một PictureBox vào một bitmap
- 3. Thay đổi hình ảnh của PictureBox thành hình ảnh từ tài nguyên của tôi?
- 4. Thay đổi sizemode của hình nền trong picturebox
- 5. emberjs sự kiện cho khi mô hình thay đổi
- 6. Có sự kiện thay đổi kích thước UIView không?
- 7. Có sự kiện thay đổi tab đã chọn trong WPF Tab Control
- 8. Tải hình ảnh Picturebox từ bộ nhớ?
- 9. Sự kiện cho thay đổi văn bản
- 10. Không có sự kiện nào như 'Chỉnh sửa đã thay đổi' cho một NSTextField?
- 11. JQuery 'Thay đổi' xử lý sự kiện cho asp.net RadioButtonList không kích hoạt sự kiện
- 12. Có sự kiện "thay đổi DOM" nào không?
- 13. Có thể nghe sự kiện "thay đổi kiểu" không?
- 14. Tắt sự kiện thay đổi kích thước trên sự kiện lịch tùy chỉnh, có thể không?
- 15. Ảnh lớn hơn để vừa với picturebox
- 16. Thay đổi mô hình trong sự kiện OnActionExecuting
- 17. thay đổi hình ảnh trênCấu hình được thay đổi
- 18. WP7 - Sự kiện nhấp chuột hình ảnh?
- 19. Việc thay đổi thuộc tính src của hình ảnh có ngăn không cho tải hình ảnh xuống không?
- 20. Sự kiện thay đổi thuộc tính javascript
- 21. Kích hoạt một sự kiện khi có sự thay đổi trong một lớp học
- 22. jQuery - Sự kiện thay đổi sự kiện cháy
- 23. Loại bỏ - Hủy sự kiện thay đổi?
- 24. Panel Control Paint Sự kiện không hoạt động cho điều khiển người dùng
- 25. Nếu tôi thay thế hình ảnh trong điều khiển PictureBox, trước tiên tôi có nên vứt bỏ hình ảnh gốc không? .Net Winforms
- 26. WebDriver: Thay đổi sự kiện không kích hoạt
- 27. Đang tải PictureBox Hình ảnh Từ Cơ sở dữ liệu
- 28. C# PrintDocument Sự kiện đã thay đổi
- 29. Tạo sự kiện để xem cho một sự thay đổi của biến
- 30. jquery sự kiện thay đổi gọi lại
Tôi không nghĩ rằng có một sự kiện như vậy vì đây là bạn của những người sẽ được thay đổi/thiết lập hình ảnh. – Waqas
@Waqas nếu có trường hợp bạn đang xây dựng Thư viện kiểm soát người dùng và thay đổi hình ảnh có thể quan trọng hơn bạn có thể cần sự kiện thay đổi hình ảnh. Nhưng một lần nữa bạn có thể thừa kế PictureBox và sửa PictureBox.Image Get/Set Method nơi bạn có thể kích hoạt Sự kiện tùy chỉnh hoặc gọi một phương thức! – Burimi