Gabriele97's Blog

Creare una finestra Aero in VB.Net

se cerchiamo su internet il codice per creare una finestra stile aero, troveremo molti codici, ognuno con un fastidiosissimo problema:

tutti i controlli posizionati nel margine Aero, non vengono visualizzati nel modo coretto!

ecco cosa intendo

fortunatamente, tutto è possibile, e infatti ecco il modo di avere una finestra stile Aero senza problemi.

il codice è

Imports System.Runtime.InteropServices
Public Class Form1
<StructLayout(LayoutKind.Sequential)> _
Public Structure MARGINS
Public Destra As Integer
Public Sinistra As Integer
Public Su As Integer
Public Giu As Integer
End Structure
Declare Auto Function DwmIsCompositionEnabled Lib "dwmapi.dll" Alias "DwmIsCompositionEnabled" (ByRef pfEnabled As Boolean) As Integer
Declare Auto Function DwmExtendFrameIntoClientArea Lib "dwmapi.dll" Alias "DwmExtendFrameIntoClientArea" (ByVal hWnd As IntPtr, ByRef pMargin As Margins) As Integer
Dim pMargins As New Margins With {.Su = -1, .Sinistra = -1, .Destra = -1, .Giu = -1}
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim en As Boolean = False
DwmIsCompositionEnabled(en)
If en Then
DwmExtendFrameIntoClientArea(Me.Handle, pMargins)
End If
Me.TransparencyKey = Color.FromKnownColor(KnownColor.ActiveCaption)
Me.BackColor = Me.TransparencyKey
End Sub
End Class

con questo codice, non c’è bisogno di impostare il nero come sfondo del form .. facciamo la prova: proviamo a mettere un textbox sul margine aero e …

si vede senza problemi!

c’è un problema, proviamo a impostare tutti i margini a 0 tranne il margine superiore, impostandolo a 4

il resto del form è completamente trasparente

per evitare questo problema, possiamo mettere un Panel nella Parte trasparente, e impostando poi la proprietà anchor

possiamo poi applicare su questo pannello, tutto quello che vogliamo senza problemi.

11 commenti »

  1. Ciao. Ho provato questo codice su Win 7 e va benissimo. Ho provato Su Vista Business tutta la finestra appare nera. Uso visual basic 2008 express edition

    Commento di DaviD — settembre 3, 2010 @ 3:54 pm

    • Ciao. Mi Pare che su vista Business, l’aero non sia attivo …

      Commento di Gabriele97 — settembre 3, 2010 @ 5:03 pm

      • No no è attivo. Ho provato altri codici e funge tutto, apparte l’errore sui controlli. Volevo usare questo codice per evitare questo errore

        Commento di DaviD — settembre 3, 2010 @ 5:31 pm

  2. se l’aero non è attivo è normale che hai il problema del Colore Nero … con altri codici, cosa succede?

    Commento di Gabriele97 — settembre 3, 2010 @ 6:26 pm

    • Si attiva l’effetto vetro ma, come dici tu nell’articolo, tutti i controlli posizionati nel margine Aero si vedono male

      Commento di DaviD — settembre 3, 2010 @ 7:40 pm

      • allora vuol dire, che il codice che do ha il problema che indichi … io su Business non ho provato

        Commento di Gabriele97 — settembre 3, 2010 @ 8:42 pm

  3. Sei veramente grande, era da tanto che cercavo questo codice per risolvere quel determinato problema.

    Commento di Giacomo — gennaio 22, 2011 @ 1:14 pm

    • non ti preoccupare che pure io ho sbattuto la testa più di 3 mesi per fare questo codice.😄

      Commento di Gabriele97 — gennaio 22, 2011 @ 3:14 pm

  4. sei un dio!!!!!

    Commento di pippo — luglio 16, 2011 @ 10:52 am

  5. veramente codice perfetto il migliore che ho trovato in giro… Grazie mille!!!

    Commento di pippo — luglio 16, 2011 @ 10:54 am


RSS feed for comments on this post. TrackBack URI

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Blog su WordPress.com.

%d blogger cliccano Mi Piace per questo: