C # NET framework- fronteira em apenas um lado da forma de
Pergunta
Eu sou um programador inexperiente, completamente novo para a programação para Windows.
Eu estou escrevendo um pequeno programa que eu sempre quis. Sua sendo escrito usando C # usando o framework .NET. pelo menos isso é o que eu acho que eu estou fazendo. Toda a conversa sobre estrutura e .nets, Windows Forms, e Win32 API tem tudo me fez muito confuso ..: (
De qualquer forma eu tenho simples objeto Form.
Form f = new Form() ;
f.Text = "" ;
f.ControlBox =false ;
Agora Como remover as todas as fronteiras no formulário, exceto uma lados? Como em, as bordas laterais devem ir, mas a borda superior deve ficar
FormBorderStyle não tem nada para este
Também como você as pessoas a resolver esses problemas por si próprio, sem pedir? olhar para os outros código? ler um livro por? qualquer site particular? Eu pesquisei, mas não apareceu nada.
Solução
Gidday,
Isso é impossível, infelizmente - você pode remover toda a orla, porém, e, em seguida, desenhar o seu próprio no formulário e usar OnMouseDown, OnMouseUp e OnMouseMove para fazer sua própria arrastando ...
Para resolver esse problema sozinho, eu iria olhar para várias maneiras diferentes de representar verbalmente o problema (por exemplo. "Forma sem fronteiras", "fronteiras personalizados em winform", etc) e gastar um pouco de tempo pesquisando para ele. Como meu chefe diz sabiamente, a produtividade não é sempre sobre a quantidade de código que você corta, é também sobre o que você pode aprender.
EDIT: Como a expressão popular vai, "Google sabe todas as" - as chances são de que, se você gastar um pouco de tempo pesquisando e você ainda não consegue encontrar nada, então provavelmente não foi resolvido, ou é muito muito raro. Outra forma seria a de investir em alguns bons livros, por exemplo, Windows Forms programação (ou mesmo apenas programação do Windows - é incrivelmente útil para saber sobre a mecânica subjacentes do Windows, e coisas assim são o que ajuda transformá-lo em um grande desenvolvedor de um grande programador é bom em codificação, mas um grande . desenvolvedor é bom para realmente construir software útil:).
Outras dicas
Eu suponho que você já tentou FormBorderStyle.FixedSingle? Isso iria mostrar um formulário com uma borda de apenas o topo. De qualquer forma, se isso não for o caso, você pode definir as formas região.
Algo 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); }
Quanto a como você sabe o que fazer? Todas as coisas que você mencionou, arquivos de ajuda, fóruns da web, livros. A principal coisa é prática, prática, prática. Quanto mais você faz algo, melhor você deve tornar-se.
Eu não acho que é realmente possível fazer exatamente o que você descreve, uma vez que o .NET Framework está indo só para delegar o desenho de sua borda e título bar do formulário para o próprio Windows, que não tem nenhuma opção para o que você descreve AFAIK.
Em vez disso, o que eu gostaria de fazer é uso FormBorderStyle.None
e depois tirar todas as decorações de janela (barra de título, bordas) que deseja manualmente.
uma pesquisa no Google por "forma sem fronteiras C #" aparece esses sites como o topo três hits:
- sem fronteiras Janela (java2s.com)
- formas sem bordas transparentes em C # (c-sharpcorner .com)
- Draggable Forma: Arraste um formulário Borderless clicando em qualquer lugar no formulário (codeproject.com)