2009-02-10 33 views
7

Có một lớp C# tiêu chuẩn xác định một trái, phải, trên và dưới không?C# lớp tiêu chuẩn (liệt kê?) Cho trên cùng, dưới cùng, bên trái, bên phải

Tôi có nên sử dụng của riêng mình không?

enum controlAlignment 
{ 
    left = 1, 
    top, 
    right, 
    bottom, 
    none = 0 
} 
+1

Nếu bạn đang tìm kiếm một mục WPF không gian tên, bạn có thể thử liệt kê System.Windows.Controls.Dock. Nó không có thuộc tính Flags, và nó không hỗ trợ tùy chọn 'None'. [http://msdn.microsoft.com/en-us/library/system.windows.controls.dock.aspx](http://msdn.microsoft.com/en-us/library/system.windows.controls. dock.aspx) –

Trả lời

7

lẽ System.Windows.Forms.AnchorStyles hoặc System.Windows.Forms.DockStyles có thể thực hiện công việc.

2

Không trừ khi bạn có thể tạo kiểu neo (có nhiều hơn). Tôi sẽ tự mình làm việc này. Trong thư viện winforms chuẩn có riêng biệtVerticalAlignmentHorizontalAlignment có thể hữu ích.

+0

Có một tùy chọn không có trong enum là một cái gì đó tôi thường thêm, do đó, phong cách neo trông giống như nó hiện công việc độc đáo! –

19

Một tìm kiếm nhanh chóng tiết lộ rằng Enumerations Khung sau đã có các thành viên (một số có bổ sung thành viên khác):

  • AnchorStyles - System.Windows.Forms
  • Border3DSide - System.Windows.Forms
  • DockStyle - System.Windows.Forms
  • Edges - System.Windows.Forms.VisualStyles
  • TabAlignment - System.Windows.Forms
  • ToolStripStatusLabelBorderSides - System.Windows.Forms
  • VerticalAlignment - System.Windows.Forms.VisualStyles
+4

Không có gì đáng để tìm kiếm này có thể được thực hiện bằng cách sử dụng "trình duyệt đối tượng" trong Visual Studio. –

+0

AnchorStyles là người duy nhất khớp chính xác, tất cả những người khác bỏ lỡ 'Không có' hoặc thêm 'Tất cả'; đã không xem xét VisualStyles .. ToolStripStatusLabelBorderSides là tốt nhất nếu bạn cũng muốn 'tất cả'. (Tất nhiên là người có tên dài nhất. Tôi sẽ tự mình cuộn ..) – TaW

1

Vâng, cả hai AnchorStylesDockStyles có giá trị bổ sung bên cạnh bốn bạn cần; AnchorStyles Ngoài ra có FlagAttribute được bật mà không nhất thiết phải có ý nghĩa (Điều gì có nghĩa là Trái trên cùng bên trái? Còn về bên phải?)

Vì tôi không thể nghĩ ra bất kỳ chức năng tích hợp nào có thể tận dụng triệt để tiêu chuẩn Các kiểu dữ liệu Anchor và DockStyles theo bất kỳ cách nào có ý nghĩa, việc viết kiểu liệt kê của riêng bạn có vẻ giống như một cách thay thế an toàn hơn để liên kết với Windows.Forms chỉ vì lợi ích của một enum.

Trừ khi, tất nhiên, bạn đã ở trong Windows.Forms và một trong các đề xuất của @ Cerebrus thực sự có ý nghĩa trong ngữ cảnh của bạn.

9

Một enum đẹp cũng có thể là:

System.Drawing. ContentAlignment (trong System.Drawing.dll)

Đây là những thành viên của nó:

public enum ContentAlignment 
{ 
    TopLeft = 1, 
    TopCenter = 2, 
    TopRight = 4, 
    MiddleLeft = 16, 
    MiddleCenter = 32, 
    MiddleRight = 64, 
    BottomLeft = 256, 
    BottomCenter = 512, 
    BottomRight = 1024, 
} 
+1

Hoan hô, một thứ không phải là Biểu mẫu! –

+0

@DirkBester Làm thế nào điều này không phải là WinForms? Hoặc làm thế nào có thể làm cho một điều kiện 'Nếu bạn đang sử dụng WPF/Silverlight' cho việc sử dụng' System.Drawing'? Tôi thậm chí không dám thử ** không ** để sử dụng System.Drawing. * Khi tôi prog WinForms. _ (nhưng thực ra đây cũng là câu trả lời mà tôi đang tìm kiếm, không phải cho cùng một câu hỏi) _ – Bitterblue

+0

@Bitterblue Câu trả lời được chấp nhận sử dụng System.Windows.Forms.AnchorStyles. Điều này sử dụng System.Drawing.ContentAlignment. Xem, không có công cụ winforms nhập vào wpf của tôi. –

2

Vì không có enum tiêu chuẩn trong.NET chính xác phù hợp với yêu cầu của bạn, tôi khuyên bạn nên tạo riêng của bạn (như I have done):

[Flags] 
private enum Borders 
{ 
    None = 0, 
    Left = 1, 
    Top = 2, 
    Right = 4, 
    Bottom = 8, 
    All = Left | Top | Right | Bottom, 
} 

Sau đó bạn có thể truy vấn các cạnh cá nhân bằng cách gọi phương thức HasFlag. Tôi đồng ý với @dbkk, tái sử dụng các enums với các giá trị tương tự nhưng một ý nghĩa khác có thể gây nhầm lẫn cho bất kỳ ai đọc mã.

+0

Dấu chấm ở giữa được thêm. – lindexi

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