PDA

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



ameysams
چهارشنبه 06 دی 1385, 07:02 صبح
با سلا م خدمت دوستان عزیزدر vb.net چگونه میتوان دکمه ی close فرم را غیر فعال کرد.
با تشکر

leilav_1984
چهارشنبه 06 دی 1385, 09:13 صبح
اول اینکه می تونی اصلا نشونش ندی

Me.FormBorderStyle=FormBorderSyles.None
یا اینکه رویداد FormClosing رو ایجاد کنی و توش :

e.Cancel=True

eyelash
چهارشنبه 06 دی 1385, 22:58 عصر
حالا چه جوری می شه برای رویذاذ Close فرم کد نویسی کرد

Amir Taghavi
پنج شنبه 07 دی 1385, 06:24 صبح
سلام

از این کد استفاده کن:


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

fotrosi
پنج شنبه 07 دی 1385, 08:53 صبح
با سلام

شاید این یکی بهتر باشه

me.controlbox=false

zarrin_306
پنج شنبه 07 دی 1385, 09:50 صبح
برای نوشتن کد در Close میتونی در قسمت Close را به جای Load انتخاب کنید

eyelash
پنج شنبه 07 دی 1385, 11:41 صبح
گویا سوالم را درست مطرح نکردم
من می خوام وقتی کاربر دکمه Close فرم را انتخاب کرد مثلا برای خروج از فرم ازش تایید بگیرم یا اینکه یه سری تغیرات انجام بدم بعد فرم بسته بشه یا اینکه اصلاً فرم بسته نشه.

titbasoft
پنج شنبه 07 دی 1385, 12:34 عصر
گویا سوالم را درست مطرح نکردم
من می خوام وقتی کاربر دکمه Close فرم را انتخاب کرد مثلا برای خروج از فرم ازش تایید بگیرم یا اینکه یه سری تغیرات انجام بدم بعد فرم بسته بشه یا اینکه اصلاً فرم بسته نشه.


یا اینکه رویداد FormClosing رو ایجاد کنی و توش :

e.Cancel=True

کد بالا قبل از بسته شدن فرم اجرا میشه و در صورت True بودن e.Cancel پروسه بسته شدن فرم کنسل خواهد شد

Payam Moradi
پنج شنبه 07 دی 1385, 13:00 عصر
گویا سوالم را درست مطرح نکردم
من می خوام وقتی کاربر دکمه Close فرم را انتخاب کرد مثلا برای خروج از فرم ازش تایید بگیرم یا اینکه یه سری تغیرات انجام بدم بعد فرم بسته بشه یا اینکه اصلاً فرم بسته نشه.


چنین قابلیتی که دوست عزیز میگه در VB 6.0 وجود داشت ولی در دات نت وجود نداره. باید یک متغییر تعریف کرد و در متغییر تنظیم بشه که آیا فرم توسط منو سیستمی بسته میشه یا توسط کدی که کاربر نوشته.!!!

اَرژنگ
پنج شنبه 07 دی 1385, 13:31 عصر
چنین قابلیتی که دوست عزیز میگه در VB 6.0 وجود داشت ولی در دات نت وجود نداره. باید یک متغییر تعریف کرد و در متغییر تنظیم بشه که آیا فرم توسط منو سیستمی بسته میشه یا توسط کدی که کاربر نوشته.!!!
همانطوری که titbasoft فرمودند این قابلیت در دات‌نت وجود داره .

عفت بزرگه
پنج شنبه 07 دی 1385, 14:48 عصر
شما با همون e.cancel کار کن در ضمن توی formclosing ‌یک فرم دیگه صدا بزن اگه مثلا کاربر بله رو زد با application.exitthread بکشش بیرون

Payam Moradi
پنج شنبه 07 دی 1385, 16:48 عصر
همانطوری که titbasoft فرمودند این قابلیت در دات‌نت وجود داره .

لطفا بفرمایید چطور میشه فرق Unload شدن با منوی سیستمی(Close) و بسته شده توسط کدی که نوشتم(مثلا کلید Cancel) در روال FormClosing یا FormClosed متوجه بشوم.

شاید مختص .net 2003 هست و در 2005 وجود نداره!؟

اگر بگید مشکل من حل بشه!

mostafa_leman
پنج شنبه 07 دی 1385, 18:10 عصر
ببینید شما از هر روشی که استفاده کنید رویداد بستن فرم ( FORMCLOSING ) انجام میشه . حالا اگه میخواین وقت بستن فرم عملی رو انجام بده توی این رویداد باید بنویسین و اگه خواستین عمل بستن فرم انجام نشه باید این رویداد رو کنسل کنید ---> E.CANCEL = TRUE را وارد نمایید

ProgramingM
چهارشنبه 20 دی 1385, 22:17 عصر
دوست من شما می توانید در خصوصیت Finaliz هر چه می خواهید بنویسید هنگامی که کاربر کلید Close را زد اتفاق می افتد
متشکرم مسعود ormasoud@yahoo.com

ali_kolahdoozan
چهارشنبه 20 دی 1385, 22:41 عصر
تابع برای 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);

alawiala
سه شنبه 26 دی 1385, 11:18 صبح
ابتدا متغیرهای زیر را تعریف کنید


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/

ali_kolahdoozan
سه شنبه 26 دی 1385, 11:54 صبح
میشه یک توضیحی بدید؟ چون من متوجه نشدم

alawiala
شنبه 30 دی 1385, 07:49 صبح
کافیست کد فوق را در برنامه خودت تایپ کنید برنامه دکمه بستن با استفاده از ثابت دوم غیر
فعال می شود من این سورس را در کل برنامه هایم در هر فرم استفاده کردم بهترین بود

mahmoudy.log
چهارشنبه 25 خرداد 1390, 12:33 عصر
بابا دستمریزاد.... یا به قول خودمون بابا ایول