2009-02-10 105 views
7

是否有一个标准的C#类,它定义了一个名义上的左,右,上和下?顶部,底部,左侧,右侧的C#标准类(枚举?)

我应该用我自己的?

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

如果您正在寻找WPF命名空间项目,您可以尝试System.Windows.Controls.Dock枚举。它没有Flags属性,并且不支持'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) – 2009-12-14 18:52:56

回答

7

也许System.Windows.Forms.AnchorStyles或System.Windows.Forms.DockStyles可以做的工作。

2

除非你可以锚样式(其中有更多)。我会为此而推出自己的产品。在标准winforms库中有单独的VerticalAlignmentHorizontalAlignment可能是有用的。

+0

在枚举中有一个none选项是我通常添加的东西,所以锚样式看起来就像它很好地完成了这项工作! – 2009-02-10 09:06:07

19

快速搜索发现,下面的框架枚举已经有这些成员(有一些其他额外的成员):

  • AnchorStyles - System.Windows.Forms的
  • Border3DSide - System.Windows.Forms的
  • DockStyle - System.Windows.Forms的
  • 边缘 - System.Windows.Forms.VisualStyles
  • TabAlignment - System.Windows.Forms的
  • ToolStripStatusLabelBorderSides - System.Windows.Forms的
  • VerticalAlignment - System.Windows.Forms.VisualStyles
+4

在Visual Studio中使用“对象浏览器”可以完成此搜索。 – 2009-12-14 18:54:56

+0

AnchorStyles是唯一能够精确匹配的人,其他所有人都会错过'None'或添加'All';没有考虑VisualStyles .. ToolStripStatusLabelBorderSides是最好的,如果你也想'全部'。 (当然是名字最长的那个,然后我会自己推出..) – TaW 2014-10-06 16:22:12

1

同时,双方AnchorStylesDockStyles除了有您所需要的四个附加价值; AnchorStyles另外有FlagAttribute打开,这不一定是有意义的(左上角是什么意思?左右怎么办?)

因为我不能想到任何可以一般利用标准的内置函数锚和DockStyles数据类型以任何有意义的方式,编写自己的枚举似乎是一个更为理想的替代方案,仅仅为了enum而与Windows.Forms链接。

当然,除非你已经在Windows.Forms中,并且@ Cerebrus的建议中的一个在你的上下文中确实有意义。

9

一个很好的枚举也可能是:

System.Drawing中。 的ContentAlignment(在System.Drawing.dll程序)

这些是其成员:

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

万岁,这不是形式! – 2014-01-06 02:41:23

2

由于在没有标准枚举。NET精确匹配您的要求,我建议创建您自己的(因为我已经做了):

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

然后,您可以通过调用HasFlag方法查询各个边沿。我同意@dbkk,重复使用类似值的枚举,但不同的含义可能会让任何人阅读代码时感到困惑。

相关问题