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.

Foi útil?

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:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top