2009-09-10 6 views
1

Je suis un programmeur inexpérimenté, complètement nouveau dans la programmation pour Windows. Je suis en train d'écrire un petit programme dont j'ai toujours rêvé. Il est écrit en utilisant C# en utilisant le framework .net. au moins c'est ce que je pense que je fais. Tous les discours sur le cadre et .nets, les formes de fenêtres et api win32 a tout m'a fait vraiment confus .. :(Cadre C# .net - bordure d'un seul côté du formulaire

de toute façon j'ai simple, objet Form.

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

maintenant Comment enlever le tout frontières sur la forme, sauf un des côtés? Comme dans, les bordures latérales devraient aller, mais la bordure supérieure devrait rester

FormBorderStyle n'a rien pour cette

aussi comment voulez-vous les gens à résoudre vous-même ces problèmes, sans demander? regarder d'autres morue e? lire un livre? un site web particulier? J'ai googlé, mais ça n'a rien révélé.

+0

Pour nous permettre de mieux vous aider, pouvez-vous nous dire ce que vous essayez de réaliser en supprimant les bordures? Cherchez-vous à empêcher la redimensionnement de la fenêtre? Est-ce juste une chose visuelle? –

Répondre

1

Gidday,

Ceci est impossible, malheureusement - vous pouvez supprimer toute la frontière, cependant, puis dessinez votre propre sur la forme et l'utilisation OnMouseDown, OnMouseUp et OnMouseMove faire votre propre traînage ...

Pour résoudre un tel problème moi-même, je voudrais examiner différentes façons de représenter verbalement le problème (par exemple, "forme sans bordure", "frontières personnalisées sur winform", etc) et passer un peu de temps pour le googler. Comme le dit sagement mon patron, la productivité ne dépend pas toujours de la quantité de code que vous coupez, mais de ce que vous pouvez apprendre. EDIT: Comme le dit l'expression populaire, "Google sait tout" - il y a de fortes chances que si vous passez un peu de temps à googler et que vous ne puissiez toujours rien trouver, alors cela n'a probablement pas été résolu, ou c'est très très rare. Une autre façon serait d'investir dans quelques bons livres, par ex. La programmation de Windows Forms (ou même la programmation de Windows - il est incroyablement utile de connaître la mécanique sous-jacente de Windows, et des choses comme ça sont ce qui vous aidera à devenir un grand développeur. est bon à construire réellement un logiciel utile. :)

+0

Merci d'avoir répondu à cette question .. J'ai recherché sur google "custom | draw borders" et cela m'a beaucoup plu. Ex: http://vicky4147.wordpress.com/2007/03/04/how-to-draw-a-custom-border-around-a-form-or-control/ Je suis sûr que je devrais pouvoir pour comprendre cela maintenant –

+0

ok ce lien n'est pas exactement utile. Puisque la bordure est plus comme une 'ligne', elle ne peut pas être utilisée pour le redimensionnement –

+0

Vous feriez probablement mieux de créer un formulaire sans bordures, puis de lui ajouter un panneau, en le plaçant en haut (propriété Dock de Panel), puis en utilisant l'événement OnMouseMove du panneau pour déplacer le formulaire lorsque le bouton gauche de la souris est maintenu enfoncé avec la souris sur le panneau. Bien que, je suppose que ce que vous essayez de faire est de faire un formulaire qui n'est pas dimensionnable - pour cela, définissez 'FormBorderStyle' à un si les options" Fixed "(par exemple FixedDialog ou FixedToolWindow) –

0

Je ne pense pas qu'il soit réellement possible de faire exactement ce que vous décrivez, puisque le .NET Framework va juste déléguer le dessin de la barre de titre et de titre de votre formulaire à Windows lui-même, qui n'a aucune option pour ce que vous décrivez AFAIK. Au lieu de cela, ce que je ferais est d'utiliser FormBorderStyle.None, puis dessiner toutes les décorations de fenêtre (barre de titre, bordures) que vous voulez manuellement.

Une recherche Google pour "forme C# sans frontières" se présente ces sites comme les trois hits:

1

Je suppose que vous avez essayé FormBorderStyle.FixedSingle? Cela afficherait un formulaire avec une bordure en haut seulement. Quoi qu'il en soit, si ce n'est pas le cas, vous pouvez définir les formes Région.

Quelque chose comme ...

 
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); 
} 

Quant à comment savez-vous quoi faire? Toutes les choses que vous avez mentionnées, les fichiers d'aide, les forums Web, les livres. L'essentiel est la pratique, la pratique, la pratique. Plus vous faites quelque chose, mieux vous devriez devenir.

Questions connexes