Nếu tôi có biểu mẫu dữ liệu, làm cách nào để biết liệu người dùng đã sửa đổi hay chưa (bằng cách nhập văn bản vào hộp văn bản hoặc bằng cách chọn một mục trong hộp tổ hợp)? Tôi đã cố gắng hooking vào sự kiện "TextChanged" của hộp văn bản của tôi, nhưng vấn đề là, khi biểu mẫu của tôi tham gia vào dữ liệu, sự kiện "TextChanged" kích hoạt, đánh dấu sớm biểu mẫu của tôi là "bẩn".Làm thế nào tôi có thể đánh dấu một biểu mẫu/trường là "bẩn" nếu nó là dữ liệu?
Trả lời
thử thực hiện
public partial class Window1 : INotifyPropertyChanged
và sau đó
public event PropertyChangedEventHandler PropertyChanged;
public string UserName
{
get { return _UserName; }
set { if (value != _UserName)
{
_UserName = value;
OnNotifyPropertyChanged("UserName");
}}
}
private void OnNotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
và DataBind như
<TextBox Text="{Binding UserName}"/>
Khi bạn lần đầu tiên hiển thị trang, lưu trữ các giá trị biểu mẫu trong một mảng, khi sự kiện TextChanged kích hoạt, so sánh với những gì bạn đã có, nếu nó là dạng bẩn khác nhau.
Lớp mô hình của bạn có triển khai INotifyPropertyChanged
không? Nếu có, bạn có thể thêm trình xử lý cho sự kiện PropertyChanged
trên lớp và xem tài sản đang được đề cập đến để thay đổi.
Nếu bạn chưa triển khai INotifyPropertyChanged
, có thể cơ chế bạn đang sử dụng để thông báo cho lớp giao diện người dùng của bản cập nhật cũng có thể được sử dụng ở đây?
->http://www.mishainthecloud.com/2009/07/simple-dirty-tracking-for-winforms-in-c.html.
Tôi biết điều này hơi trễ nhưng tôi thích cách tiếp cận này :) Tốt đẹp được đóng gói.
Sau khi liên kết các điều khiển, hãy gọi SetAsClean(). Cuộc gọi phương thức này có thể được đóng gói trong cùng một lớp theo dõi bẩn bằng cách xử lý một số sự kiện của BindingSources.
Đừng nghĩ rằng điều này áp dụng cho WPF. –
- 1. Đánh dấu dữ liệu là nhạy cảm trong python
- 2. android: làm cách nào để đánh dấu ứng dụng của tôi là có thể gỡ lỗi?
- 3. Học thuyết: Cách đánh dấu giá trị của cột đối tượng là bẩn?
- 4. Nếu byte là số nguyên 8 bit thì làm thế nào chúng ta có thể đặt nó là 255?
- 5. có thể đánh dấu phương thức ghi đè là
- 6. Làm thế nào để biết nếu bất kỳ thực thể trong bối cảnh là bẩn với. Net Entity Framework 4.0
- 7. Tôi có thể sử dụng in_array như thế nào nếu kim là một mảng?
- 8. Phục hồi một thực thể được đánh dấu là EntityState.Delete?
- 9. Làm cách nào để đánh dấu một ô nếu có một từ cụ thể bên trong?
- 10. Làm cách nào tôi có thể chuyển các biến vào tệp đánh dấu R.
- 11. Tôi có thể đánh dấu Email là "Tầm quan trọng cao" cho Outlook bằng System.Net.Mail không?
- 12. Trong C++, nếu ném là một biểu thức, loại của nó là gì?
- 13. grails - cho tôi biết nếu có gì bẩn?
- 14. Làm thế nào để đánh dấu một hàng trong QTableWidget?
- 15. Nếu `main` là một thể hiện của` Object`, tại sao tôi không thể gọi nó?
- 16. Đánh dấu các biểu mẫu lồng nhau đa cấp dưới dạng "bẩn" trong Rails
- 17. Làm thế nào là x86 tại trang thiết lập bit bẩn?
- 18. Lập bản đồ Python: Làm thế nào tôi có thể làm cho dừng matplotlib.pyplot buộc kiểu đánh dấu của tôi?
- 19. WordPress: làm thế nào tôi có thể nhận được nguồn cấp dữ liệu rss chỉ là một bài duy nhất?
- 20. Rails - làm thế nào tôi có thể thực hiện một yêu cầu mà không đánh cơ sở dữ liệu?
- 21. Làm thế nào tôi có thể tuần tự hóa - deserialize một băm để lưu nó trong cơ sở dữ liệu?
- 22. python đánh giá các biểu thức "là" như thế nào?
- 23. Trong cmake, làm thế nào tôi có thể kiểm tra nếu trình biên dịch là Clang?
- 24. Làm thế nào để bạn đánh giá một chuỗi như là một biểu thức clojure?
- 25. Làm thế nào để kiểm tra một biến giá trị null nếu nó là một chuỗi?
- 26. Làm thế nào để phát hiện nếu M7 là hiện nay, a.k.a nó là một iPhone 5S hoặc mới hơn?
- 27. Tôi có thể đánh dấu điều khiển từ xa GIT là chỉ đọc không?
- 28. Cách đánh dấu một hội đồng .net là an toàn?
- 29. Làm thế nào để biết liệu phần tử XML có được đánh dấu là bắt buộc trong tệp XSD
- 30. Làm thế nào để ẩn StringFormat nếu dữ liệu là null
Cải thiện rất nhỏ: bạn có thể giảm lồng bằng cách thay thế làm cho nó: if (value == _UserName) trở về; Cắt giảm sự lộn xộn thị giác một chút. –