2011-11-18 54 views
7

thể trùng lặp:
Text property in a UserControl in C#Làm cách nào để hiển thị thuộc tính Văn bản của UserControl?

Làm thế nào để đánh dấu Text tài sản của một UserControl như có thể xem?


Lớp .NET UserControl có thuộc tính Text.

Thật không may là Text tài sản của một UserControl không browsable là:

// 
// 
// Returns: 
//  The text associated with this control. 
[Bindable(false)] 
[EditorBrowsable(EditorBrowsableState.Never)] 
[Browsable(false)] 
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public override string Text { get; set; } 

Trong UserControl tôi muốn để lộ các Text tài sản (ví dụ: làm cho nó "thể xem") trong cửa sổ thuộc tính. Tôi đã thử một cách mù quáng tuyên bố nó có thể duyệt được:

[Browsable(true)] 
public override string Text { get; set; } 

và bây giờ nó xuất hiện trong cửa sổ thuộc tính, ngoại trừ bây giờ nó không có gì.

Tôi đã cố gắng một cách mù quáng gọi base.Text để mang lại các chức năng:

[Browsable(true)] 
public override string Text { get {return base.Text;} set { base.Text = value; this.Invalidate(); } } 

và bây giờ tài sản thực hiện chức năng tại thời gian thiết kế, nhưng giá trị tài sản không được tồn đến Form.Designer.cs và nó InitalizeComponent mã.

các thích cách để vạch trần những UserControlText tài sản để nó là gì:

  • có thể xem được trong cửa sổ thuộc tính
  • là chức năng
  • là vẫn kiên trì trong thiết kế mẫu

và, làm tiền thưởng:

  • biết khi nào nó thay đổi
+1

Không hẳn một bản sao chính xác. Câu hỏi của tôi là * cách * (nghĩa là cách thích hợp, trái ngược với việc nghiền bàn phím ngẫu nhiên của tôi) để làm cho một thuộc tính có thể xem được. Câu hỏi khác là thuộc tính đã có thể xem được nhưng không được đăng. –

Trả lời

11

Bạn đang đi đúng hướng; chỉ cần thêm [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

Để tìm hiểu khi nó thay đổi, ghi đè OnTextChanged:

protected override void OnTextChanged (EventArgs eventArgs) 
{ 
    System.Diagnostics.Trace.WriteLine("OnTextChanged(): eventArgs: " + eventArgs); 
    base.OnTextChanged(eventArgs); 
} 
+0

Hoàn hảo tuyệt vời. –

Các vấn đề liên quan