Sidebar en .net2

Description

Cette source en .net2 ma première sur ce site (il y a longtemps j'étais inscrit en tant que misterglacon :p) est une sorte de SDK pour creer une SideBar comme la future de windows vista ?

Il y a longtemps j'avais tenté d'en faire une, en vb.net mais c'était pas façil, mon problème était de réorganiser les fenêtres du bureau au chargement de la SideBar. En effet quand la SideBar se charge elle réduit le "WorkSpace" de windows, pour que les icones ainsi que les fenêtres maximisées n'empietent pas sur celle-ci.
Si vous comprenez pas (normal je pense)
avant : http://perso.wanadoo.fr/vod-k/shot.jpg
maintenant : http://perso.wanadoo.fr/vod-k/shot2.jpg

Récemment j'ai intégralement recommencé le projet et en passant trouvé une solution qui marche à merveille pour ne pas chambouler le bureau au chargement/déchargement de la barre.
Je vous propose donc cette assembly "Core.dll" avec un exemple. L'exemple n'est pas du tout terminé je n'ai même pas commencé la gestion de plugins...

Pour les API et la class Rectangle, ainsi que l'idée, je me suis inspiré de la source de Richard Clark ici (en c#...) : http://www.c2i.fr/code.aspx?IDCode=530<

L'assembly VodK.dll c'est mon petit framework... (ne contenant rien d'extraordinaire d'ailleur mais bien pratique)

Source / Exemple :


'Core.dll permet de transformer n'importe quelle form en sidebar !

'Un exemple...
'Creer un nouveau projet, ajouter une form (form1)
'Ajouter Core.dll en référence
'Ajouter une "application setting" de nom "WSS", type "String" et scope "User"(pour éviter le readonly ^^)
'Mettre la propriété de la Form "TopMost" à true (j'aurais du le faire dans l'assembly directement, un petit oublis..)

Public Class Form1
    Public WithEvents Screen As New Core.Screen 'la class Screen
    Public Windows As New Core.Windows 'la class Windows

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'on décharge de la SideBar (sinon votre bureau se vera réduit...)
        Screen.Clear(Settings.Default.WSS) 'la restauration de la taille du bureau...
        Windows.Move(Me, Settings.Default.WSS, True, False) 'le déplacement de toutes les fenêtres du bureau (remaximiser les fenêtres...)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'on charge la sidebar
        ' ! la largeur de votre sidebar sera la largeur de la form ici form1
        Screen.Initialize(Me, Settings.Default.WSS, True) 'chargement de la sidebar
        Windows.Move(Me, Settings.Default.WSS, True, True) 'déplacement des fenêtres du bureau (remaximiser les fenêtres...)
    End Sub

    Private Sub Screen_UpdateWSS(ByVal NewValue As String) Handles Screen.UpdateWSS
        Settings.Default.WSS = NewValue 'sans ça rien ne marchera
        'Settings.default.WSS c'est une "application setting" de type "string" et scope "user"
        'elle stocke la taille de votre workspace (sans la sidebar)
        'quand la sidebar se décharge la taille du workspace est réinitialisée à cette taille...
    End Sub
End Class

Conclusion :


je pense que l'exemple est suffisament commenté, contrairement à ma source :p
la source est un exemple beaucoup plus complet, qui gère les skins et la position (gauche/droite) de la sidebar sur le bureau
Essayez vous verrez...

Ah oui j'oubliais, j'ai utilisé la beta 2 de visual studio 2005 pour l'assembly et le projet exemple (sidebar.exe)

n'hésitez pas à donner votre avis :d
(désolé pour les fautes d'orthographes)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.