2011-05-16 21 views

Respuesta

9

A pesar de que esto ha sido respondida, me pareció que lo siguiente es lo que necesita basado en parte en respuesta Smoore 's.

Crea un nuevo control. Editar el código a ser las siguientes:

public partial class Line : Label 
{ 
    public override bool AutoSize 
    { 
     get 
     { 
      return false; 
     } 
    } 

    public override Size MaximumSize 
    { 
     get 
     { 
      return new Size(int.MaxValue, 2); 
     } 
    } 

    public override Size MinimumSize 
    { 
     get 
     { 
      return new Size(1, 2); 
     } 
    } 

    public override string Text 
    { 
     get 
     { 
      return ""; 
     } 
    } 

    public Line() 
    { 
     InitializeComponent(); 
     this.AutoSize = false; 
     this.Height = 2; 
     this.BorderStyle = BorderStyle.Fixed3D; 
    } 
} 

Reemplazar Línea con el nombre de clase del control que desee. Esto colocará un separador que le permitirá cambiar el tamaño en el diseñador e inhabilitará la adición de texto, cambiar el tamaño del auto fuerza a que la altura del tamaño sea 2 y el ancho sea lo que quiera y deshabilita la adición de texto.

4

En realidad, no está incluido en el conjunto de controles estándar (¡seguro que solía estar de vuelta en el día!) Pero puede crear fácilmente su propio truco usando un GroupBox sin texto y una altura de 1px.

control de usuario para proporcionar la misma cosa: (No escrito por mí, fuente: http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/0d4b986e-3ed0-4933-a15d-4b42e02005a7/)

public partial class LineSeparator:UserControl 
{ 

    public LineSeparator() 
    { 
     InitializeComponent(); 
     this.Paint += new PaintEventHandler(LineSeparator_Paint); 
     this.MaximumSize = new Size(2000, 2); 
     this.MinimumSize = new Size(0, 2); 
     this.Width = 350; 
    } 

    private void LineSeparator_Paint(object sender, PaintEventArgs e) 
    { 
     Graphics g = e.Graphics; 
     g.DrawLine(Pens.DarkGray, new Point(0, 0), new Point(this.Width, 0)); 
     g.DrawLine(Pens.White, new Point(0, 1), new Point(this.Width, 1)); 
    } 
} 
+1

Hace que se pregunte por qué el límite de 2000, que ni siquiera es suficiente para cubrir una configuración de 2 pantallas. Me recuerda a la mala programación de Solomon. – Blindy

+0

Lazyness, creo;) –

16

Si no me equivoco, eso es sólo un control de línea, pero no creo que exista el control nunca más. Here es una solución.

label1.AutoSize = False 
label1.Height = 2 
label1.BorderStyle = BorderStyle.Fixed3D 
Cuestiones relacionadas