Pregunta

Soy un programador inexperto, completamente nuevo en programación para Windows.

Estoy escribiendo un pequeño programa que siempre quise. Se está escribiendo usando C # usando .net framework. Al menos eso es lo que creo que estoy haciendo. Toda la charla sobre framework y .nets, windows forms y win32 api me ha confundido mucho ... :(

de todos modos tengo un objeto Form simple.

 Form f = new Form() ;
 f.Text = "" ;   
 f.ControlBox =false ;

Ahora, ¿Cómo eliminar todos los bordes del formulario excepto uno de los lados? Al igual que en, los bordes laterales deben ir, pero el borde superior debe permanecer

FormBorderStyle no tiene nada para esto

También, ¿cómo resuelven ustedes mismos estos problemas, sin preguntar? mira el código de otros? leer un libro? ¿Algún sitio web en particular? He buscado en Google, pero no apareció nada.

¿Fue útil?

Solución

Gidday,

Desafortunadamente, esto es imposible. Sin embargo, puede eliminar todo el borde, dibujar el suyo en el formulario y usar OnMouseDown, OnMouseUp y OnMouseMove para hacer su propio arrastre ...

Para resolver un problema de este tipo, vería varias formas diferentes de representar verbalmente el problema (por ejemplo, "forma sin bordes", "bordes personalizados en winform", etc.) y dedicar un poco de tiempo a buscarlo en Google. . Como dice sabiamente mi jefe, la productividad no siempre tiene que ver con la cantidad de código que cortas, sino también con lo que puedes aprender.

EDITAR: como dice la expresión popular, " Google sabe todo " - lo más probable es que, si pasas un poco de tiempo buscando en Google y aún no puedes encontrar nada, entonces probablemente no se haya resuelto, o sea muy raro. Otra forma sería invertir en algunos buenos libros, por ejemplo, La programación de Windows Forms (o incluso solo la programación de Windows: es increíblemente útil saber acerca de los mecanismos subyacentes de Windows, y cosas como esas son las que lo convierten en un gran desarrollador. Un gran programador es bueno en la codificación, pero es un gran desarrollador es bueno en la construcción de software útil. :)

Otros consejos

Supongo que has probado FormBorderStyle.FixedSingle? Esto mostraría un formulario con un borde solo en la parte superior. De todos modos, si ese no es el caso, puede configurar los formularios Región.

Algo así como ...

public static void HideBorders(Form form)
{
    Rectangle newRegion = form.Bounds;
    Rectangle formArea = form.Bounds;
    Rectangle clientArea = form.RectangleToScreen(form.ClientRectangle);

    formArea.Offset(form.Location);
    newRegion.Offset(clientArea.X - formArea.X, 0);
    newRegion.Width = clientArea.Width;
    newRegion.Height = (clientArea.Y - formArea.Y) + clientArea.Height;

    form.Region = new Region(newRegion);
}

En cuanto a cómo sabes qué hacer? Todas las cosas que mencionaste, archivos de ayuda, foros web, libros. Lo principal es la práctica, la práctica, la práctica. Cuanto más hagas algo, mejor deberías ser.

No creo que sea realmente posible hacer exactamente lo que usted describe, ya que .NET Framework simplemente va a delegar el dibujo del borde y la barra de título de su Formulario a Windows, que no tiene ninguna opción para lo que usted describe AFAIK.

En su lugar, lo que haría sería usar FormBorderStyle.None y luego dibujar las decoraciones de las ventanas (barra de título, bordes) que desee manualmente.

Una búsqueda en Google para " formulario sin bordes C # " muestra estos sitios como los tres primeros éxitos:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top