• 0
mak_hourani

سؤال ... كيف الغي عمل X من الفورم

سؤال

مرحبا شباب سؤال صغير ...

كيف الغي عمل ال X الموجود على title bar

الغيها ما اخليها تطلع من البرنامج

تم تعديل بواسطه mak_hourani
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

11 إجابة على هذا السؤال .

  • 0

الطريقة السهلة هي الإشتراك في الحدث FormClosing للنموذج ثم تحديد الخاصية e.Cancel على True. هذه الطريقة ستمنع غلق النموذج حتى بطريقة برمجية يعني الدالة Close. يعني يجب أن تضع شرطا لقبول أو رفض غلق النموذج.

الطريقة الصعبة باستعمال دوال API لإلغاء تنشيط الزر X على شريط العنوان و قائمة النظام على النموذج. إذا كانت هي ضالتك سأنشر لك الحل.

تحياتي...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكــم ورحمـة الله وبركاتــه ،،

هذا الكود يقوم بإلغاء تفعيل Disable لزر الإغلاق

Imports System.Runtime.InteropServices

Public Class Form1

<DllImport("user32.dll")> _
Private Shared Function GetSystemMenu(ByVal hwnd As IntPtr, ByVal bRevert As Integer) As IntPtr
End Function

<DllImport("user32.dll")> _
Private Shared Function GetMenuItemCount(ByVal hMenu As IntPtr) As Integer
End Function

<DllImport("user32.dll")> _
Private Shared Function RemoveMenu(ByVal hMenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
End Function

<DllImport("user32.dll")> _
Private Shared Function DrawMenuBar(ByVal hwnd As IntPtr) As Integer
End Function

Private Const MF_BYPOSITION As Integer = &H400&
Private Const MF_REMOVE As Integer = &H1000&

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim hSysMenu As IntPtr = GetSystemMenu(Me.Handle, False)
If hSysMenu Then
Dim subMenusCount As Integer = GetMenuItemCount(hSysMenu)
RemoveMenu(hSysMenu, subMenusCount - 1, MF_BYPOSITION Or MF_REMOVE)
DrawMenuBar(Me.Handle)
Else
MsgBox("Cann't find the system menu.", MsgBoxStyle.Exclamation)
End If
End Sub
End Class

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا سلام عليك يا شبح , فنان :clapping:

طيب كيف بقدر اشيلها بالمرة , الكود السابق فقط يعمل لها Disable

و أعمل شكل الفورم كأنه User Control من غير اطار ازرق حتى :nose_patch:

تم تعديل بواسطه assaf_abdullah
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

عشان تلغى Close box من الظهور اساسا , يجب ان تجعل الخاصية Control Box للفورم False , وتجعل الخاصية text للفورم فارغة

وكدا هيشيل ال Title bar كله

لكن ما شوفتش طريقة تلغى ال close button بس

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكم

عشان تلغى Close box من الظهور اساسا , يجب ان تجعل الخاصية Control Box للفورم False , وتجعل الخاصية text للفورم فارغة

وكدا هيشيل ال Title bar كله

لكن ما شوفتش طريقة تلغى ال close button بس

فعلا كما قال هانى ,, لا توجد طريقة على حد علمى تحذف زر الإغلاق نهائيا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

خلص شكرا على المعلومة ;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مرحباً اخواني الكرام،

هناك أيضاً طريقة أبسط, ولاتحتاج منك استخدام اي من الـ( APIs ) ولكنها لاتخفي رز الـ( X ) من شريط اللافتة بل تجعله عاطل :

انسخ الكود
  1.  
  2. Protected Overrides ReadOnly Property CreateParams[color= #009900;]([/color][color= #009900;])[/color] [color= #b1b100;]As[/color] [color= #990000;]System[/color][color= #339933;].[/color]Windows[color= #339933;].[/color]Forms[color= #339933;].[/color]CreateParams
  3. Get
  4. Dim Param [color= #b1b100;]As[/color] CreateParams [color= #339933;]=[/color] MyBase[color= #339933;].[/color]CreateParams
  5. Param[color= #339933;].[/color]ClassStyle [color= #339933;]+=[/color] [color= #cc66cc;]512[/color]
  6. [color= #b1b100;]Return[/color] Param
  7.  
  8.  

بالتوفيق :) .

تم تعديل بواسطه Bashar Rabat
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكورين يا اخوان ....

شكرا جزيلا ....

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
الطريقة السهلة هي الإشتراك في الحدث FormClosing للنموذج ثم تحديد الخاصية e.Cancel على True. هذه الطريقة ستمنع غلق النموذج حتى بطريقة برمجية يعني الدالة Close. يعني يجب أن تضع شرطا لقبول أو رفض غلق النموذج.

الطريقة الصعبة باستعمال دوال API لإلغاء تنشيط الزر X على شريط العنوان و قائمة النظام على النموذج. إذا كانت هي ضالتك سأنشر لك الحل.

تحياتي...

بالنسبة لهاد الكود مو هاد الي بدي احتاجه لأنه لما بدي اعمل

Me.close ()

ما راح تشتغل هادي الخاصيه شكرا الك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فكره جيده اخى بشار

و للعلم فإن الرقم 512 يمثل الثابت

CS_NOCLOSE = 0x200

و هو جعل الـ style الخاص بالـ class التى سيتم تسجيلها لهذه الفورم بدون زر close

مع الأخذ فى الإعتبار ان طريقة الأخ ghost تتيح لك التحكم فى فاعلية الزر close بمعنى انك تستطيع تفعيله او عدم تفعيله اثناء عمل البرنامج و بناءا على عملية معينه تقوم بها فى برنامجك، اما طريقة الأخ بشار فهى تمنع وجود الزر close من الأساس اى تقوم بحذفه من قائمة الـ system للنافذه و بالتالى لن تستطيع التعامل مع هذا الزر على الإطلاق (مع العلم انه يمكن التحايل على موضوع حذفه بإعادة اضافته بنفس إعداداته و لكن هذا موضوع اخر).

و الله ولى التوفيق

تم تعديل بواسطه Muhammad alaa
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
فكره جيده اخى بشار

و للعلم فإن الرقم 512 يمثل الثابت

CS_NOCLOSE = 0x200

و هو جعل الـ style الخاص بالـ class التى سيتم تسجيلها لهذه الفورم بدون زر close

مع الأخذ فى الإعتبار ان طريقة الأخ ghost تتيح لك التحكم فى فاعلية الزر close بمعنى انك تستطيع تفعيله او عدم تفعيله اثناء عمل البرنامج و بناءا على عملية معينه تقوم بها فى برنامجك، اما طريقة الأخ بشار فهى تمنع وجود الزر close من الأساس اى تقوم بحذفه من قائمة الـ system للنافذه و بالتالى لن تستطيع التعامل مع هذا الزر على الإطلاق (مع العلم انه يمكن التحايل على موضوع حذفه بإعادة اضافته بنفس إعداداته و لكن هذا موضوع اخر).

و الله ولى التوفيق

شكراً لك أخي محمد على تقييم الفكرة،

يمكنك التحكم بتفعيل الزر ( Close ) في وقت التشغيل ( RunTime ) أيضاً, لكن سيكون عليك تصريح متغير عام ضمن صفه ليكون القيمة الحالية لتفعيل الـ( Close Button ), هناك طريقتان لتغير الحالة إحداها بتغير الخاصية ( WindowState ) إلى ( Maximize ) ومن ثم إلى ( Normal ) ولكن هذه الطريقة غير متقنة وبالأحرى لا أحد سيرغبها, لذلك يمكنك الإعتماد على الإجراء ( RecreateHandle ) وبذلك سيعمل بشكل سليم, جرب الـ( Code ) التالي :

انسخ الكود
  1.  
  2. [color= #339933;]<[/color]Global[color= #339933;].[/color]Microsoft[color= #339933;].[/color]VisualBasic[color= #339933;].[/color]CompilerServices[color= #339933;].[/color]DesignerGenerated[color= #009900;]([/color][color= #009900;])[/color][color= #339933;]>[/color] [color= #990000;]_[/color]
  3. Partial [color= #000000; font-weight: bold;]Class[/color] Form1
  4. Inherits [color= #990000;]System[/color][color= #339933;].[/color]Windows[color= #339933;].[/color]Forms[color= #339933;].[/color]Form
  5.  
  6. [color= #0000ff;]'Form overrides dispose to clean up the component list.[/color]
  7. [color= #0000ff;] <System.Diagnostics.DebuggerNonUserCode()> _[/color]
  8. [color= #0000ff;] Protected Overrides Sub Dispose(ByVal disposing As Boolean)[/color]
  9. [color= #0000ff;] If disposing AndAlso components IsNot Nothing Then[/color]
  10. [color= #0000ff;] components.Dispose()[/color]
  11. [color= #0000ff;] End If[/color]
  12. [color= #0000ff;] MyBase.Dispose(disposing)[/color]
  13. [color= #0000ff;] End Sub[/color]
  14.  
  15. [color= #0000ff;] '[/color]Required by the Windows Form Designer
  16. [color= #000000; font-weight: bold;]Private[/color] components [color= #b1b100;]As[/color] [color= #990000;]System[/color][color= #339933;].[/color]ComponentModel[color= #339933;].[/color]IContainer
  17.  
  18. [color= #0000ff;]'NOTE: The following procedure is required by the Windows Form Designer[/color]
  19. [color= #0000ff;] '[/color]It can be modified using the Windows Form Designer[color= #339933;].[/color]
  20. [color= #0000ff;]'Do not modify it using the code editor.[/color]
  21. [color= #0000ff;] <System.Diagnostics.DebuggerStepThrough()> _[/color]
  22. [color= #0000ff;] Private Sub InitializeComponent()[/color]
  23. [color= #0000ff;] Me.CKDisbleCloseButton = New System.Windows.Forms.CheckBox[/color]
  24. [color= #0000ff;] Me.SuspendLayout()[/color]
  25. [color= #0000ff;] '[/color]
  26. [color= #0000ff;]'CKDisbleCloseButton[/color]
  27. [color= #0000ff;] '[/color]
  28. Me[color= #339933;].[/color]CKDisbleCloseButton[color= #339933;].[/color]AutoSize [color= #339933;]=[/color] [color= #000000; font-weight: bold;]True[/color]
  29. Me[color= #339933;].[/color]CKDisbleCloseButton[color= #339933;].[/color]Location [color= #339933;]=[/color] [color= #000000; font-weight: bold;]New[/color] [color= #990000;]System[/color][color= #339933;].[/color]Drawing[color= #339933;].[/color]Point[color= #009900;]([/color][color= #cc66cc;]12[/color][color= #339933;],[/color] [color= #cc66cc;]12[/color][color= #009900;])[/color]
  30. Me[color= #339933;].[/color]CKDisbleCloseButton[color= #339933;].[/color]Name [color= #339933;]=[/color] [color= #0000ff;]"CKDisbleCloseButton"[/color]
  31. Me[color= #339933;].[/color]CKDisbleCloseButton[color= #339933;].[/color]Size [color= #339933;]=[/color] [color= #000000; font-weight: bold;]New[/color] [color= #990000;]System[/color][color= #339933;].[/color]Drawing[color= #339933;].[/color]Size[color= #009900;]([/color][color= #cc66cc;]124[/color][color= #339933;],[/color] [color= #cc66cc;]17[/color][color= #009900;])[/color]
  32. Me[color= #339933;].[/color]CKDisbleCloseButton[color= #339933;].[/color]TabIndex [color= #339933;]=[/color] [color= #cc66cc;]0[/color]
  33. Me[color= #339933;].[/color]CKDisbleCloseButton[color= #339933;].[/color]Text [color= #339933;]=[/color] [color= #0000ff;]"Disable Close Button"[/color]
  34. Me[color= #339933;].[/color]CKDisbleCloseButton[color= #339933;].[/color]UseVisualStyleBackColor [color= #339933;]=[/color] [color= #000000; font-weight: bold;]True[/color]
  35. [color= #0000ff;]'[/color]
  36. [color= #0000ff;] '[/color]Form1
  37. [color= #0000ff;]'[/color]
  38. [color= #0000ff;] Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)[/color]
  39. [color= #0000ff;] Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font[/color]
  40. [color= #0000ff;] Me.ClientSize = New System.Drawing.Size(153, 41)[/color]
  41. [color= #0000ff;] Me.Controls.Add(Me.CKDisbleCloseButton)[/color]
  42. [color= #0000ff;] Me.Name = "Form1"[/color]
  43. [color= #0000ff;] Me.Text = "Form1"[/color]
  44. [color= #0000ff;] Me.ResumeLayout(False)[/color]
  45. [color= #0000ff;] Me.PerformLayout()[/color]
  46.  
  47. [color= #0000ff;] End Sub[/color]
  48. [color= #0000ff;] Friend WithEvents CKDisbleCloseButton As System.Windows.Forms.CheckBox[/color]
  49. [color= #0000ff;]End Class[/color]
  50.  
  51. [color= #0000ff;]Public Class Form1[/color]
  52. [color= #0000ff;] Private Sub CKDisbleCloseButton_CheckedChanged(ByVal sender As System.Object, ByVal e As Sy
    stem.EventArgs) Handles CKDisbleCloseButton.CheckedChanged[/color]
  53. [color= #0000ff;] MyBase.RecreateHandle()[/color]
  54. [color= #0000ff;] End Sub[/color]
  55.  
  56. [color= #0000ff;] Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams[/color]
  57. [color= #0000ff;] Get[/color]
  58. [color= #0000ff;] Dim Param As CreateParams = MyBase.CreateParams[/color]
  59. [color= #0000ff;] If CKDisbleCloseButton IsNot Nothing Then[/color]
  60. [color= #0000ff;] If CKDisbleCloseButton.Checked Then[/color]
  61. [color= #0000ff;] Param.ClassStyle = 520[/color]
  62. [color= #0000ff;] Else[/color]
  63. [color= #0000ff;] Param.ClassStyle = 8[/color]
  64. [color= #0000ff;] End If[/color]
  65. [color= #0000ff;] Else[/color]
  66. [color= #0000ff;] Dim DefaultValue As Int32 = 8[/color]
  67. [color= #0000ff;] Param.ClassStyle = DefaultValue[/color]
  68. [color= #0000ff;] End If[/color]
  69. [color= #0000ff;] Return Param[/color]
  70. [color= #0000ff;] End Get[/color]
  71. [color= #0000ff;] End Property[/color]
  72. [color= #0000ff;]End Class[/color]
  73.  

مرة أخرى ( شكراً ) .

بالتوفيق :) .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .