I think this is not so clever to do like this way, but have to do like
customer wants - so how to do this? It seems to be not just like
changing property like with MinimizeBox and MaximizeBox. Any succestions?
--
Thanks in advance!
Mika
When you are sure your users wants it and you are not distributing the
program too others, (because otherwise you will most probably directly be
confrontated with bug reports which are probably justifiable correct) you
can just use the closing event and set in that e.cancel = true (or false I
always am in doubt about the last just try).
I would in your situation let the user sign a contract that he wanted this.
What you can do as well is showing in a the messagebox from the clossing
event that this is by order from your client disabled. (A little more polite
however not to misunderstand text than of course).
Instead of that all you can as well overpaint the X (and keep the cancel)
however that will be a lot more work.
I hope this helps?
Cor
'disables close
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
Const CS_NOCLOSE As Integer = &H200
cp.ClassStyle = cp.ClassStyle Or CS_NOCLOSE
Return cp
End Get
End Property
Nice, I never saw this one before (is now in my snippets)
Thanks
Cor
Add this to your form:
\\\
Protected Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
Const CS_DBLCLKS As Int32 = &H8
Const CS_NOCLOSE As Int32 = &H200
cp.ClassStyle = CS_DBLCLKS Or CS_NOCLOSE
Return cp
End Get
End Property
///
Alternatively you can remove the according menu items from the system
menu using p/invoke.
--
M S Herfried K. Wagner
M V P <URL:http://dotnet.mvps.org/>
V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
Thanks Mark! Seems to work like I need!
--
Mika
--
Mick Doherty
http://dotnetrix.co.uk/nothing.html
"Cor Ligthert" <notmyfi...@planet.nl> wrote in message
news:OJG5WZ4B...@TK2MSFTNGP09.phx.gbl...
If you never want the Close Button to show then use the CreateParams method,
but if you want to toggle the state of the close button then this method is
no good, you will instead have to modify the Window Menu.
--
Mick Doherty
http://dotnetrix.co.uk/nothing.html
"Cor Ligthert" <notmyfi...@planet.nl> wrote in message
news:%23cm2Kz3...@tk2msftngp13.phx.gbl...
When I saw your article I thought I have to say Sorry Sorry Sorry however
you gave me the change here.
Until now I thought that I had seen only awfull painting solutions, because
this simple one I would have remembered me I thought.
Again Sorry Sorry Sorry
:-)))
Cor
--
Mick Doherty
http://dotnetrix.co.uk/nothing.html
"Cor Ligthert" <notmyfi...@planet.nl> wrote in message
news:unSqFF7B...@TK2MSFTNGP10.phx.gbl...
Private Declare Function GetSystemMenu Lib "user32" Alias
"GetSystemMenu" (ByVal hwnd As Integer, ByVal bRevert As Integer) As Integer
Private Declare Function DeleteMenu Lib "user32" Alias "DeleteMenu"
(ByVal hMenu As Integer, ByVal nPosition As Integer, ByVal wFlags As Integer)
As Integer
Private Const MF_BYPOSITION As Integer = &H400&
Put this in form load:
DeleteMenu(iMenu, 6, MF_BYPOSITION) ' Disable the 'X' (Control Box)
DeleteMenu(iMenu, 5, MF_BYPOSITION) ' Remove the seperator bar
The above will disable your ControlBox for you
ACK. I have published a similar solution on my website some time ago
(<URL:http://dotnet.mvps.org/dotnet/code/windowsandforms/#NoClose>), but I
prefer the 'CreateParams' solution.
"Herfried K. Wagner [MVP]" wrote: