顶部、底部、左侧、右侧的C#标准类(枚举?)

顶部、底部、左侧、右侧的C#标准类(枚举?),c#,C#,是否有一个标准的c#类定义了概念上的左、右、上和下 我应该用我自己的吗 enum controlAlignment { left = 1, top, right, bottom, none = 0 } 阅读也许System.Windows.Forms.AnchorStyles或System.Windows.Forms.DockStyles可以完成这项工作。除非您可以使用锚样式(其中有更多)。我会为此而自食其力。在标准winforms库中,有可能有用的独立

是否有一个标准的c#类定义了概念上的左、右、上和下

我应该用我自己的吗

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

阅读也许System.Windows.Forms.AnchorStyles或System.Windows.Forms.DockStyles可以完成这项工作。

除非您可以使用锚样式(其中有更多)。我会为此而自食其力。在标准winforms库中,有可能有用的独立的
垂直对齐
水平对齐

快速搜索显示以下框架枚举已经有这些成员(一些有其他附加成员):

  • 主持人风格-System.Windows.Forms
  • Border3DSide-System.Windows.Forms
  • DockStyle-System.Windows.Forms
  • 边缘-System.Windows.Forms.VisualStyles
  • TabAlignment-System.Windows.Forms
  • ToolStripStatusLabelBorderSides-System.Windows.Forms
  • 垂直对齐-System.Windows.Forms.VisualStyles

嗯,
主播风格
码头风格
除了您需要的四个之外,还有其他价值
AnchorsStyles
另外还启用了
FlagAttribute
,这不一定有意义(左上角的意思是什么?左下角的意思是什么?)

由于我想不出任何内置函数能够以任何有意义的方式普遍利用标准的Anchor和DockStyles数据类型,因此编写自己的枚举似乎是一种比仅为了枚举而链接
Windows.Forms
更明智的选择


当然,除非您已经在Windows.Forms中,@Cerburus的一个建议在您的上下文中是有意义的。

我经常使用它,因为它并不意味着任何特定的意图。

一个好的枚举也可能是:

System.Drawing.内容对齐(在System.Drawing.dll中)

成员包括:

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

由于.NET中没有与您的需求完全匹配的标准枚举,我建议您创建自己的枚举(正如我所做的):


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

对于WPF项目(而不是WinForms),存在以下问题。它只有
在枚举中有一个none选项,这是我通常添加的,所以锚样式看起来做得很好!使用VisualStudio中的“对象浏览器”进行搜索毫无意义。主播风格是唯一精确匹配的,所有其他类型要么遗漏“无”,要么添加“全部”;没有考虑视觉风格。如果还需要“全部”,则ToolStripStatusLabelBorderSides是最好的。(当然是名字最长的那一个。那我就自己滚吧…)如果箭头方向也包括在这个列表中,那就太好了,正如@dave Cousineau所指出的+1对于接近完整的列表如果要查找WPF命名空间的项目,可以尝试System.Windows.Controls.Dock枚举。它没有Flags属性,并且不支持“None”选项。万岁,这不是形式@德克贝斯特这怎么不是WinForms?或者,如果您使用WPF/Silverlight
来使用
System.Drawing
,您如何设置条件
?当我编程WinForms时,我甚至不敢尝试不使用System.Drawing.*。(但事实上,这也是我一直在寻找的答案,但不是针对同一个问题)@Bitterblue接受的答案使用System.Windows.Forms.AnchorStyles。这将使用System.Drawing.ContentAlignment。请看,没有winforms内容导入到我的wpf中。@BiterBlue&DirkBester:您的评论是对的。System.Drawing.dll是任何标准WinForms项目的一部分,但不是标准WPF/Silverlight项目的一部分。只需将此枚举复制并粘贴到您的WPF/Silverlight项目中。添加中心点即可。
[Flags]
private enum Borders
{
    None = 0,
    Left = 1,
    Top = 2,
    Right = 4,
    Bottom = 8,
    All = Left | Top | Right | Bottom,
}