2009-10-06 27 views

Trả lời

15

Từ mã, gần nhất bạn có thể làm điều đó để che giấu nó, và có lẽ làm cho nó một nỗi đau để gọi trực tiếp - lưu ý rằng ngay cả khi ẩn nó là callable, và không ai trong số này sẽ làm việc qua một dàn diễn viên:

// about the closest you can do, but not really an answer 
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 
[Obsolete("just cast me to avoid all this hiding...", true)] 
public new ContentAlignment TextAlign { get; set; } 

Cá nhân, tôi sẽ không bận tâm. Nó không phải là mạnh mẽ (chỉ cần cast).

+0

Cảm ơn Marc. Bằng cách cast bạn có nghĩa là đúc đến lớp cha trong trường hợp này, Button? –

1

Có thể những gì bạn muốn làm là lấy được từ ContainerControl hoặc UserControl, thêm Nút vào điều khiển đó và chỉ hiển thị những phần của giao diện Nút mà bạn muốn giữ lại.

1

Không, bạn có thể xóa chúng khỏi trình thiết kế (như được hiển thị) nhưng bạn thực sự không thể ẩn mã biểu mẫu vì điều đó sẽ vi phạm nguyên tắc thay thế. Nó đã được yêu cầu & trả lời nhiều lần ở đây, xem ví dụ this SO question.

2

Bạn có thể sử dụng thuộc tính [EditorBrowsable], dưới dạng documented here.

[EditorBrowsable(EditorBrowsableState.Never)] 
public bool HideMeInIntellisense 
{ 
    // ... 

Từ các tài liệu:

... động cơ IntelliSense trong Visual Studio sử dụng thuộc tính này để xác định xem để hiển thị một tài sản hoặc phương pháp.

Tuy nhiên, người dùng có thể ghi đè cài đặt này trong cài đặt VS. ReSharper cũng có một cài đặt kiểm soát xem thuộc tính này có được vinh danh trong IntelliSense của nó hay không.

Ngoài sự tò mò, tại sao bạn muốn ẩn nội dung nào đó khỏi người dùng? Chỉ vì một thành viên bị ẩn theo cách được mô tả ở trên không có nghĩa là bạn không thể sử dụng nó trong mã và biên dịch thành công. Nó chỉ ức chế sự phát hiện của thành viên.

+0

Bằng cách ẩn, tôi muốn hoàn toàn "xóa" để bạn không thể truy cập. Đó là vì một số thuộc tính của Button không áp dụng cho điều khiển của tôi. –

+0

Bạn đã xem xét phân lớp phụ huynh của lớp Button và thực hiện lại những gì bạn cần chưa? Tôi sẽ xem xét yêu cầu một câu hỏi mới mà digs vào lý do tại sao bạn cần phải thay đổi hành vi của nút và tìm kiếm những cách khác nhau để đạt được điều đó. –

0

Tại sao bạn không đặt chế độ riêng tư? Nó đảm bảo rằng tổ tiên sẽ không nhìn thấy nó. Chỉnh sửa: Trong trường hợp này, bạn phải kế thừa một lớp mới từ cơ sở và sử dụng lớp mới của bạn, bây giờ ẩn thuộc tính đó.

public class MyTextBox: TextBox 
{ 
... 
     private new ContentAlignment TextAlign 
     { 
      get { return base.ContentAlignment; } 
      set { base.ContentAlignment = value; } 
     } 
} 
+0

Bởi vì điều này có thể hoặc không thể thực hiện được. Đôi khi bạn chỉ muốn ẩn một cái gì đó từ GUI. –

+0

Tôi vừa thử điều này - tài sản vẫn xuất hiện trong nhà thiết kế. – JPNotADragon

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