Khi có ngoại lệ được ném hoặc nếu giá trị Nguồn dữ liệu là rỗng, thì Displaymember được đặt thành một chuỗi trống.
Sử dụng trình giải mã mã .NET, có các nhận xét trong mã về cách hoạt động của tính năng này. Tôi sẽ cố gắng diễn giải.
Exceptions có thể được ném vào các trường hợp sau:
- mã ứng dụng trên DataSourceChanged
- Trong ràng buộc khi dữ liệu đang được định dạng để hiển thị
- Nếu giá trị DisplayMember là không hợp lệ trong mới Nguồn dữ liệu.
Nhận xét cũng đề cập đến ngoại lệ thực tế là "nuốt" để tránh vi phạm hành vi mong đợi.
Cá nhân tôi đã gặp phải hành vi này và vì ngoại lệ không được ném nên thật khó để tìm ra điều kiện nào trong số các điều kiện này gây ra việc đặt lại. Có lẽ là một cách tốt hơn nhưng bây giờ tôi đang sử dụng điều này trong kiểm soát tùy chỉnh của tôi. Thuộc tính Nguồn dữ liệu hợp lệ khi đặt DisplayMember sau khi được đặt lại vì vậy tôi thực sự không chắc chắn về lý do tại sao nó không thành công:
public new object DataSource
{
get { return base.DataSource; }
set
{
string displayMem = this.DisplayMember;
base.DataSource = value;
if (string.IsNullOrEmpty(this.DisplayMember) && string.IsNullOrEmpty(displayMem))
this.DisplayMember = displayMem;
DetermineDropDownWidth();
}
}
Vì vậy, cách nó hoạt động, phải không ??? –
Vâng, "chức năng như được viết" ;-p Nhưng nó vi phạm một số hành vi đặc tính điển hình (tức là tác dụng phụ không mong muốn). –