با سلا م خدمت دوستان عزیزدر vb.net چگونه میتوان دکمه ی close فرم را غیر فعال کرد.
با تشکر
با سلا م خدمت دوستان عزیزدر vb.net چگونه میتوان دکمه ی close فرم را غیر فعال کرد.
با تشکر
اول اینکه می تونی اصلا نشونش ندی
Me.FormBorderStyle=FormBorderSyles.Noneیا اینکه رویداد FormClosing رو ایجاد کنی و توش :
e.Cancel=True
حالا چه جوری می شه برای رویذاذ Close فرم کد نویسی کرد
سلام
از این کد استفاده کن:
Public Class CloseButton
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Integer, ByVal revert As Integer) As Integer
Private Declare Function EnableMenuItem Lib "user32" (ByVal menu As Integer, ByVal ideEnableItem As Integer, ByVal enable As Integer) As Integer
Private Const SC_CLOSE As Integer = &HF060
Private Const MF_BYCOMMAND As Integer = &H0
Private Const MF_GRAYED As Integer = &H1
Private Const MF_ENABLED As Integer = &H0
Public Shared Sub Disable(ByVal form As System.Windows.Forms.Form)
Select Case EnableMenuItem(GetSystemMenu(form.Handle.ToInt32, 0), SC_CLOSE, MF_BYCOMMAND Or MF_GRAYED)
Case MF_ENABLED
Case MF_GRAYED
Case &HFFFFFFFF
Throw New Exception("The Close menu item does not exist.")
Case Else
End Select
End Sub
End Class
برای نوشتن کد در Close میتونی در قسمت Close را به جای Load انتخاب کنید
گویا سوالم را درست مطرح نکردم
من می خوام وقتی کاربر دکمه Close فرم را انتخاب کرد مثلا برای خروج از فرم ازش تایید بگیرم یا اینکه یه سری تغیرات انجام بدم بعد فرم بسته بشه یا اینکه اصلاً فرم بسته نشه.
چنین قابلیتی که دوست عزیز میگه در VB 6.0 وجود داشت ولی در دات نت وجود نداره. باید یک متغییر تعریف کرد و در متغییر تنظیم بشه که آیا فرم توسط منو سیستمی بسته میشه یا توسط کدی که کاربر نوشته.!!!گویا سوالم را درست مطرح نکردم
من می خوام وقتی کاربر دکمه Close فرم را انتخاب کرد مثلا برای خروج از فرم ازش تایید بگیرم یا اینکه یه سری تغیرات انجام بدم بعد فرم بسته بشه یا اینکه اصلاً فرم بسته نشه.
شما با همون e.cancel کار کن در ضمن توی formclosing یک فرم دیگه صدا بزن اگه مثلا کاربر بله رو زد با application.exitthread بکشش بیرون
لطفا بفرمایید چطور میشه فرق Unload شدن با منوی سیستمی(Close) و بسته شده توسط کدی که نوشتم(مثلا کلید Cancel) در روال FormClosing یا FormClosed متوجه بشوم.همانطوری که titbasoft فرمودند این قابلیت در داتنت وجود داره .
شاید مختص .net 2003 هست و در 2005 وجود نداره!؟
اگر بگید مشکل من حل بشه!
ببینید شما از هر روشی که استفاده کنید رویداد بستن فرم ( FORMCLOSING ) انجام میشه . حالا اگه میخواین وقت بستن فرم عملی رو انجام بده توی این رویداد باید بنویسین و اگه خواستین عمل بستن فرم انجام نشه باید این رویداد رو کنسل کنید ---> E.CANCEL = TRUE را وارد نمایید
دوست من شما می توانید در خصوصیت Finaliz هر چه می خواهید بنویسید هنگامی که کاربر کلید Close را زد اتفاق می افتد
متشکرم مسعود ormasoud@yahoo.com
تابع برای disable کردن دکمه close هست .
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
publicclassCloseButton
{
#region Interop Code
privateconstint SC_CLOSE = 0xF060;
privateconstint MF_BYCOMMAND = 0x0;
privateconstint MF_GRAYED = 0x1;
privateconstint MF_ENABLED = 0x0;
[DllImport("user32.dll", SetLastError = true)]
privatestaticexternint GetSystemMenu(IntPtr hWnd, int revert);
[DllImport("user32.dll", SetLastError = true)]
privatestaticexternint EnableMenuItem(int menu, int ideEnableItem, int enable);
#endregion
publicstaticvoid Disable(Form form)
{
IntPtr hWnd = form.Handle;
int SystemMenu = GetSystemMenu(hWnd, 0);
int PreviousState = EnableMenuItem(SystemMenu, SC_CLOSE, MF_BYCOMMAND | MF_GRAYED);
if (PreviousState == -1)
thrownewException("The close menu does not exist");
}
}
حالا طرز استفاده
add this code to a class named: CloseButton
then in formload :CloseButton.Disable(this);
آخرین ویرایش به وسیله titbasoft : شنبه 30 دی 1385 در 12:23 عصر دلیل: استفاده از تگ کد
ابتدا متغیرهای زیر را تعریف کنید
Private _closeClick As Boolean
Public Const SC_CLOSE As Integer = 61536
Public Const WM_SYSCOMMAND As Integer = 274
سپس سابروتین زیر
Protected Overloads Overrides Sub WndProc(ByRef m As message)
If m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32 = SC_CLOSE Then
Exit Sub
Else
Me._closeClick = True
End If
MyBase.WndProc(m)
End Sub
http://alaasabzpoush.blogsky.com/
آخرین ویرایش به وسیله titbasoft : شنبه 30 دی 1385 در 12:22 عصر دلیل: تگ کد
میشه یک توضیحی بدید؟ چون من متوجه نشدم
کافیست کد فوق را در برنامه خودت تایپ کنید برنامه دکمه بستن با استفاده از ثابت دوم غیر
فعال می شود من این سورس را در کل برنامه هایم در هر فرم استفاده کردم بهترین بود
بابا دستمریزاد.... یا به قول خودمون بابا ایول