Giả sử tôi có một thuộc tính mà tôi muốn hiển thị trong một DataGridView, nhưng không phải khi cùng một đối tượng được hiển thị trong một PropertyGrid. Tôi biết tôi có thể sử dụng [Browsable(false)]
nhưng ẩn nó trong cả hai chế độ xem. Tôi cũng có thể làm một gridView.Columns["blah"].Visible = false;
, nhưng điều này là đối diện của những gì tôi muốn, vì nó ẩn trong DataGridView nhưng không phải trong PropertyGrid. Có cách nào để làm ngược lại không? (Viết tắt của một DataTable hoàn toàn mới chỉ để giữ cùng một dữ liệu trừ một trường, và rebinding tất cả mọi thứ để thay vào đó - đó thực sự là một cách kludge để làm việc.) Ngoài ra, tôi có thể sống với một giải pháp mà thêm một cột vào DataGridView không có trong lớp thực tế.Làm cho một tài sản có thể nhìn thấy trong DataGridView nhưng không trong PropertyGrid?
Trả lời
có thể giải quyết vấn đề này bằng cách sử dụng thuộc tính BrowsableAttributes của PropertyGrid. Đầu tiên, tạo một thuộc tính mới như thế này:
public class PropertyGridBrowsableAttribute : Attribute
{
private bool browsable;
public PropertyGridBrowsableAttribute(bool browsable){
this.browsable = browsable;
}
}
Sau đó thêm thuộc tính này cho tất cả những thuộc tính mà bạn muốn được hiển thị trong PropertyGrid của bạn:
[DisplayName("First Name"), Category("Names"), PropertyGridBrowsable(true)]
public string FirstName {
get { return ... }
set { ... }
}
Sau đó, thiết lập thuộc tính BrowsableAttributes như thế này:
myPropertyGrid.BrowsableAttributes = new AttributeCollection(
new Attribute[] { new PropertyGridBrowsableAttribute(true) });
Điều này sẽ chỉ hiển thị thuộc tính được phân bổ trong lưới thuộc tính của bạn và DataGridView vẫn có thể truy cập tất cả các thuộc tính chỉ nỗ lực mã hóa nhiều hơn một chút.
Tôi vẫn sẽ đi với Tergiver và gọi hành vi này là một lỗi, vì tài liệu của thuộc tính Có thể duyệt rõ ràng chỉ rõ việc sử dụng nó cho các cửa sổ thuộc tính.
(tín dụng đi vào sử dụng "maro" tại http://www.mycsharp.de/wbb2/thread.php?postid=234565)
Vâng, đã 3 tháng kể từ lần cuối tôi chạm vào dự án này, và một phần của nó liên quan đến việc này đã được tái cấu trúc hoàn toàn, vì vậy tôi không thể kiểm tra điều này nữa, nhưng tôi sẽ tiếp tục và chấp nhận câu trả lời này, bởi vì nó người duy nhất tôi có, và nó _looks_ hợp lệ ... –
Tôi tình cờ gặp điều này một vài ngày trước, có cùng một vấn đề. Nó chắc chắn hoạt động như một sự quyến rũ! Nhưng nó rất thú vị khi thấy rằng điều này dường như đã được xúc động chỉ rất ít lần và chỉ có MỘT người đã đưa ra một giải pháp ... Vâng, bây giờ nó có sẵn bằng tiếng Anh là tốt. – Sebastian
- 1. C# UserControl Tài sản có thể nhìn thấy
- 2. Làm thế nào để có được số hàng có thể nhìn thấy của DataGridView sau BindingSource.Filter?
- 3. jQuery .là (": có thể nhìn thấy") hoạt động trong Firefox nhưng không phải Chrome
- 4. EF trong một UserControl không thể nhìn thấy app.config?
- 5. Xác định các đỉnh có thể nhìn thấy trong OpenGL
- 6. JavaScript có thể nhìn thấy trong Firebug, không thể tiếp cận trong mã
- 7. Phần có thể nhìn thấy có thể nhìn thấy của văn bản
- 8. Suppress "nguồn C nhìn thấy nhưng` CC` undefined "trong automake?
- 9. Knockout có thể nhìn thấy liên kết không làm việc
- 10. tài sản heroku không tìm thấy 404
- 11. tài sản hibernate không tìm thấy
- 12. JSP, EL tài sản không tìm thấy
- 13. Resource không tìm thấy cho phân khúc 'tài sản'
- 14. Có thể xác định giá trị tài sản là tài sản trong kiến không?
- 15. jQuery phát hiện các yếu tố có thể nhìn thấy nhưng ẩn
- 16. HorizontalScrollView có thể nhìn thấy trẻ em
- 17. không thể tìm thấy một tài sản có tên là 'xxx.yyy' trong FormView (hai chiều ràng buộc đối với tài sản lồng nhau)
- 18. hai lớp có thể nhìn thấy nhau bằng C++ không?
- 19. Trục trặc có thể nhìn thấy Datepicker?
- 20. ControllerMacros không thể được nhìn thấy trong RSpec
- 21. Dịch vụ Windows không thể nhìn thấy semaphore có tên
- 22. Không thể nhìn thấy _ (gạch dưới) trong nội dung WPF
- 23. Wrapping GridView văn bản mà không có một không gian có thể nhìn thấy
- 24. "lsof" cho thấy một tập tin như (xóa) nhưng tôi vẫn có thể nhìn thấy nó trong hệ thống tập tin
- 25. Có phải máy phát điện.next() có thể nhìn thấy trong python 3.0 không?
- 26. Jython nói "Không có nhà thầu có thể nhìn thấy cho lớp học"
- 27. Làm thế nào tôi có thể ràng buộc một ItemsControl.ItemsSource với một tài sản trong XAML?
- 28. Làm thế nào tôi có thể buộc PropertyGrid hiển thị hộp thoại tùy chỉnh cho một thuộc tính cụ thể?
- 29. Làm thế nào tôi có thể biết liệu một điều khiển Delphi hiện có thể nhìn thấy?
- 30. yếu tố Đếm li có thể nhìn thấy với jQuery
tôi sẽ chấp nhận họ khi họ thực sự trả lời câu hỏi của tôi. Một nửa câu hỏi của tôi hầu như không có bất kỳ quan điểm nào, hãy để một mình phản ứng tốt. –
Tôi gọi đây là lỗi. 'Browsable' đặc biệt nói rằng nó xác định khả năng hiển thị của một thành viên trong cửa sổ thuộc tính. Điều này không có gì để làm với một DGV. Bạn có thể mở một vấn đề kết nối, nhưng tỷ lệ cược rằng họ sẽ sửa chữa nó là chính xác bằng không. Một sửa chữa chắc chắn sẽ phá vỡ mã hiện tại. Tôi nghĩ bạn không may mắn ở đây. – Tergiver
Chết tiệt. Tất nhiên, họ có thể thêm một trang trí mới thay vì thử và sửa chữa có thể duyệt được, nhưng vẫn hút rằng không có cách nào để làm điều này. Bạn sẽ nghĩ rằng nó sẽ không phải là một yêu cầu không phổ biến ... –