PDA

View Full Version : غیر فعال کردن دکمه خروج فرم



nasiiiiiii
پنج شنبه 09 تیر 1390, 23:17 عصر
سلام دوستان من دارم یه برنامه می نویسم که یک دکمه خروج دارم می خوام که کاربر تنها از طریق این دکمه بتونه از برنامه خارج بشه و می خوام دکمه خروج در بالای فرم رو غیر فعال کنم با جستجو تو سایت به این نتیجه رسیدم که باید از کد e.cancel=true استفاده کنم که در قسمت frmclosing نوشته شود اما نمدونم چرا عمل نمیکنه !
از کمک شما ممنونم:ناراحت::افسرده:

bnnoor
جمعه 10 تیر 1390, 00:56 صبح
دو روش وجود دارد : ( البته برای برداشتن کلید نه غیر فعال کردنش که به نظرم بهتره )
1 گزینه FormBorderStyle رو به None تغییر بدید . ( از قسمت خصوصیات فرم )
2 اول قسمت Text فرم رو پاک کنید و قسمت Control Box رو غیرفعال کنید .

alimanam
جمعه 10 تیر 1390, 10:44 صبح
با سلام

من هم نظرم رو میگم :چشمک: :

واسه این کار چندین روش منطقی و عشایری ! وجود داره :

روش اول و بهترین روش :

با استفاده از کدهای زیر از کاربر بپرسین که قصد خروج از برنامه رو داره یا نه :

Dim res As DialogResult = MsgBox("آیا قصد خروج از برنامه را دارید ؟", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Exit !")
If res = Windows.Forms.DialogResult.No Then e.Cancel = True


روش دوم : با استفاده از توابع API ویندوزدکمه خروج رو به کل غیر فعال کنین !!!

Public Class Form1

Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Long) As IntPtr
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As IntPtr) As Integer
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As IntPtr) As Boolean
'
Private Const MF_BYPOSITION = &H400
Private Const MF_REMOVE = &H1000
Private Const MF_DISABLED = &H2
'
Public Sub DisableCloseButton(ByVal hwnd As IntPtr)
Dim hMenu As IntPtr
Dim menuItemCount As Integer
hMenu = GetSystemMenu(hwnd, False)
menuItemCount = GetMenuItemCount(hMenu)
Call RemoveMenu(hMenu, menuItemCount - 1, _
MF_DISABLED Or MF_BYPOSITION)
Call RemoveMenu(hMenu, menuItemCount - 2, _
MF_DISABLED Or MF_BYPOSITION)
Call DrawMenuBar(hwnd)
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DisableCloseButton(Me.Handle)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Application.Exit()
End Sub

End Class


روش عشایری :

دوستمون یکی دو موردش رو در پست شماره 2 لطف کردن توضیح دادن .


موفق باشید ./