2009-02-10 11 views
7

¿Hay una clase estándar de C# que defina un nocional izquierdo, derecho, superior e inferior?Clase estándar C# (¿enumeración?) Para Arriba, Abajo, Izquierda, Derecha

¿Debo simplemente usar la mía?

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

Si está buscando un elemento de espacio de nombres de WPF, puede probar la enumeración System.Windows.Controls.Dock. No tiene el atributo Flags y no admite la opción 'Ninguno'. [http://msdn.microsoft.com/en-us/library/system.windows.controls.dock.aspx](http://msdn.microsoft.com/en-us/library/system.windows.controls. dock.aspx) –

Respuesta

7

Quizás System.Windows.Forms.AnchorStyles o System.Windows.Forms.DockStyles podrían hacer el trabajo.

2

No, a menos que pueda los estilos de anclaje (que tiene más). Yo haría mi propio para esto. En la biblioteca estándar de winforms hay por separadoVerticalAlignment y HorizontalAlignment que pueden ser útiles.

+0

Tener una opción none en una enumeración es algo que normalmente añado, ¡así que parece que los estilos de anclaje hacen bien el trabajo! –

19

Una búsqueda rápida reveló que las siguientes enumeraciones marco ya tienen estos miembros (algunos tienen otros miembros adicionales):

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

No vale la pena que esta búsqueda se pueda hacer usando el "buscador de objetos" en Visual Studio. –

+0

AnchorStyles es el único que coincide exactamente, todos los demás o pierden 'None' o agregan 'All'; no consideró VisualStyles .. ToolStripStatusLabelBorderSides es lo mejor si también quiere 'todo'. (Por supuesto, el que tiene el nombre más largo. Voy a rodar el mío entonces ...) – TaW

1

bien, tanto AnchorStyles y DockStyles tienen valores adicionales además de los cuatro que necesita; AnchorStyles adicionalmente tiene FlagAttribute encendido que no necesariamente tiene sentido (¿Qué significaría la parte superior izquierda? ¿Qué pasa con Left Right?)

No se me ocurren funciones integradas que puedan aprovechar genéricamente la norma Los tipos de datos Anchor- y DockStyles en cualquier forma significativa, escribir tu propia enumeración parece una alternativa mucho más sana que enlazar contra Windows.Forms solo por el bien de una enumeración.

A menos que, por supuesto, ya esté dentro de Windows.Forms, y una de las sugerencias de @ Cerebrus realmente tiene sentido en su contexto.

9

Un buen enumeración también podría ser:

System.Drawing. ContentAlignment (en System.Drawing.dll)

Estos son sus miembros:

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

¡Hurra, algo que no es Formas! –

+0

@DirkBester ¿Cómo es esto no WinForms? ¿O cómo se puede hacer que la condición 'Si está utilizando WPF/Silverlight' para el uso de' System.Drawing'? Ni siquiera me atrevo a intentar ** no ** usar System.Drawing. * Cuando desarrollo WinForms. _ (pero en realidad esta también fue la respuesta que estaba buscando, no la misma pregunta) _ – Bitterblue

+0

@Bitterblue La respuesta aceptada usa System.Windows.Forms.AnchorStyles. Esto usa System.Drawing.ContentAlignment. Mira, no hay cosas de winforms importadas en mi wpf. –

2

Puesto que no hay enumeración estándar en.NET exactamente coincidentes con sus requisitos, sugiero la creación de su propia (como lo he hecho):

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

Luego, puede consultar los bordes individuales llamando al método HasFlag. Estoy de acuerdo con @dbkk, reutilizando enumeraciones con valores similares, pero un significado diferente puede ser confuso para cualquiera que lea el código.

+0

Center dot be add. – lindexi

Cuestiones relacionadas