Bloccare posizone form

giovedì 29 novembre 2007 - 16.31

drigo83 Profilo | Senior Member

Ciao a tutti, ho un form mdicontainer con all'interno un po' di form figli, vorrei fare in modo che questi form non possano essere spostati all'interno del container.

Qualcuno ha qualche idea su come poter fare?

Grazie

Ciao

SSUPERPIPPO Profilo | Guru

Non so se può andarti bene: un metodo semplice potrebbe essere impostando su 'none' la propriety 'FormBorderStyle'...

Diversamente non mi pare ci siano metodi automatici, mi sà che dovresti intercettare lo spostamento del form forzandogli la posizione ...

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

drigo83 Profilo | Senior Member

In questo modo però mi toglie il bordo, niente, forzerò la posizione.

Grazie ancora.

Ciao

alextyx Profilo | Expert

Nella wndproc, puoi intercettare i messaggi di spostamento, ma mi viene il dubbio che il form possa rimanere bloccato 'in assoluto' e non solo relativamente al form padre. Non ho mai provato ad usare questa tecnica con gli MDI. Se vuoi fare una prova ( e poi ci racconti come funziona... ), ti passo il codice.
Io ci avevo ricavato un controllo personalizzato che chiamo FormBloccabile (fantasia al potere!), ma basta che tu inserisca il codice e le dichiarazioni all'interno di un form normale, per ottenerne il bloccaggio. Puoi anche evitare di gestire la variabile boolena con la quale decido se applicare, o meno, il suddetto bloccaggio.:

Public Class FormBloccabile
Inherits System.Windows.Forms.Form

Const WM_NCLBUTTONDOWN As Int32 = &HA1
Const WM_SYSCOMMAND As Int32 = &H112
Const HTCAPTION As Int32 = &H2
Const SC_MOVE As Int32 = &HF010
Private FlagMobile As Boolean = True

Protected Overrides Sub WndProc(ByRef m As Message)
If Not FlagMobile Then
If m.Msg = WM_SYSCOMMAND And m.WParam.ToInt32() = SC_MOVE OrElse m.Msg = WM_NCLBUTTONDOWN And m.WParam.ToInt32() = HTCAPTION Then
Return
End If
End If
MyBase.WndProc(m)
End Sub

Public Property Mobile() As Boolean
Get
Return FlagMobile
End Get
Set(ByVal Mobile As Boolean)
FlagMobile = Mobile
End Set
End Property

End Class

Temo che non funzionerà bene per il tuo caso, ma non si sa mai!
Tienici informati. Ciao.

drigo83 Profilo | Senior Member

Ha funzionato !!!

Grazie!

Ciao ciao

alextyx Profilo | Expert

Ma, se muovi il form padre, cioè il contenitore, i form contenuti (e bloccati), lo seguono, o rimangono nello stesso punto dello schermo (approfitto del tuo collaudo)?

drigo83 Profilo | Senior Member

Lo seguono!!

alextyx Profilo | Expert

Marvelous!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5