PDA

View Full Version : مبتدی: حذف دکمه close از فرم



نسرین2000
دوشنبه 29 اردیبهشت 1393, 09:35 صبح
سلام
چه طوری می شه دکمه close رو از بالای فرم حذف کنم تا کاربر نتونه فرم رو ببنده ؟
فقط دکمه close یعنی دکمه های maximize و minimize باشند .

mhmoein
دوشنبه 29 اردیبهشت 1393, 09:45 صبح
سلام
این کد را به فرم اضافه کن

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

xminxmin
دوشنبه 29 اردیبهشت 1393, 09:48 صبح
سلام
چه طوری می شه دکمه close رو از بالای فرم حذف کنم تا کاربر نتونه فرم رو ببنده ؟
فقط دکمه close یعنی دکمه های maximize و minimize باشند .


برای نبودنش و قتی دکمه های دیگه هستن نمی دونم میشه یا نه. ولی می تونید غیر فعالش کنید.
توی رویداد FormClosing فرمتون کد e.Cancel = True رو وارد کنید. کاربر هرچی دکمه رو بزنه عمل نمی کنه.
این طوری:



Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
e.Cancel = True
End Sub

نسرین2000
دوشنبه 29 اردیبهشت 1393, 10:28 صبح
برای نبودنش و قتی دکمه های دیگه هستن نمی دونم میشه یا نه. ولی می تونید غیر فعالش کنید.
توی رویداد FormClosing فرمتون کد e.Cancel = True رو وارد کنید. کاربر هرچی دکمه رو بزنه عمل نمی کنه.
این طوری:



Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
e.Cancel = True
End Sub


درسته دکمه close غیر فعال میشه ولی فرم هیچ وقت close نمی شه یعنی من جایی که کد نوشتم توسط دکمه Esc فرم بسته بشه و به فرم قبلی برگرده اجرا نمی شه و اون فرم تا آخر برنامه باز می مونه چه طوری این مشکل رو حل کنم ؟؟؟

نسرین2000
دوشنبه 29 اردیبهشت 1393, 10:28 صبح
سلام
این کد را به فرم اضافه کن

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
کد شما ارور می ده و میگه که کلاس والد و اصلی وجود ندارد ( یه همچین چیزی )

aliagamon
دوشنبه 29 اردیبهشت 1393, 10:43 صبح
اینو بالای اون اضافه کن درست میشه:
Private Const CP_NOCLOSE_BUTTON As Integer = &H200
میشه این:

Private Const CP_NOCLOSE_BUTTON As Integer = &H200
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

xminxmin
دوشنبه 29 اردیبهشت 1393, 10:53 صبح
درسته دکمه close غیر فعال میشه ولی فرم هیچ وقت close نمی شه یعنی من جایی که کد نوشتم توسط دکمه Esc فرم بسته بشه و به فرم قبلی برگرده اجرا نمی شه و اون فرم تا آخر برنامه باز می مونه چه طوری این مشکل رو حل کنم ؟؟؟


این ابتکار شما رو لازم داره. مثلا این همین الان به ذهنم رسید:
یه متغیر Boolean بصورت عمومی تعریف کنید. نوی کدی که دادم شرط کنید اگر True بود خط e.cancel = true انجام بشه.
If flag=True Then e.Cancel = True
حالا اگر برای خروج از فرم دکمه ی دیگه ای دارید یا هر چیز دیگه. توی رویدادش اینو بنویسید

flag = False
Form1.close()







به محض Load شدن دوباره فرم باز flag=True میشه