بصريا إزالة / زر إغلاق تعطيل من شريط العنوان. NET

StackOverflow https://stackoverflow.com/questions/1743433

  •  20-09-2019
  •  | 
  •  

سؤال

وقد طلب

وأنا لإزالة أو تعطيل زر الإغلاق من وجهة نظرنا تطبيق MDI VB. NET 2005. لا توجد خصائص الأم في نموذج التي تسمح لك الرمادي من زر الإغلاق وبالتالي فإن المستخدم لا يمكن إغلاقه، وأنا لا أتذكر رؤية أي شيء في فئة النموذج من شأنها أن تسمح لي أن أفعل ذلك.

هل هناك ربما مكالمة API أو بعض الممتلكات السحرية لمجموعة أو وظيفة لدعوة في. NET 2005 أو في وقت لاحق للقيام بذلك؟

و~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ومزيد من المعلومات:

وأنا بحاجة للحفاظ على التصغير / التكبير وظيفة

وأنا بحاجة للحفاظ على شريط العنوان الأصلي لأساليب رسم النموذج بالفعل معقدة للغاية.

هل كانت مفيدة؟

المحلول

واستنادا إلى أحدث المعلومات قمت بإضافتها إلى سؤالك، انتقل إلى نهاية جوابي.


وهذا هو ما تحتاج إلى مجموعة إلى false: <لأ href = "http://msdn.microsoft.com/en-us/library/system.windows.forms.form.controlbox.aspx" يختلط = "noreferrer "> Form.ControlBox الملكية

ولكن، ستفقد تصغير وتكبير أزرار فضلا عن القائمة التطبيق (أعلى اليسار).

وكبديل لذلك، عند_الإغلاق تجاوز ومجموعة إلغاء إلى true (C # المثال):

protected override void OnFormClosing(FormClosingEventArgs e)
{
    if (e.CloseReason != CloseReason.WindowsShutDown && e.CloseReason != CloseReason.ApplicationExitCall)
    {
        e.Cancel = true;
    }

    base.OnFormClosing(e);
}

إذا لم يكن أي من هذه الحلول مقبولة، ويجب عليك تعطيل مجرد زر الإغلاق، يمكنك الذهاب إلى pinvoke / createparams في المسار:

<وأ href = "https://web.archive.org/web/20091124101754/http://riteshk.blogspot.com/2008/12/how-to-disable-close-button-from-window_19. أتش تي أم أل "يختلط =" noreferrer "> كيفية تعطيل زر الإغلاق من شكل نافذة باستخدام تطبيق. NET

وهذه هي النسخة VB من التعليمات البرمجية JDM ل:

Private Const CP_NOCLOSE_BUTTON As Integer = &H200
Protected Overloads Overrides ReadOnly Property CreateParams() As    CreateParams
   Get 
      Dim myCp As CreateParams = MyBase.CreateParams 
      myCp.ClassStyle = myCp.ClassStyle Or CP_NOCLOSE_BUTTON 
      Return myCp 
   End Get 
End Property 

نصائح أخرى

ويمكنك تعطيل زر الإغلاق وعنصر القائمة وثيق في قائمة النظام عن طريق تغيير "على غرار الطراز" من النافذة. قم بإضافة التعليمات البرمجية التالية إلى النموذج الخاص بك:

const int CS_NOCLOSE = 0x200;

protected override CreateParams CreateParams {
    get {
        CreateParams cp = base.CreateParams;
        cp.ClassStyle |= CS_NOCLOSE;
        return cp;
    }
}

وهذا لن تتوقف فقط على نافذة من الحصول على مغلقة، ولكنها ستكون الرمادي فعلا الزر. فمن C # ولكن أعتقد أنه يجب أن يكون من السهل ترجمتها إلى VB.

وهنا هو طريقة بسيطة لإزالة زر الإغلاق:
 1. حدد نموذج لل
 2. الآن انتقل إلى Properties.
 3. البحث ControlBox وتغيير القيمة إلى False.

وهذا سيزيل جميع أزرار التحكم <م> (على سبيل المثال. تصغير أو تكبير، خروج) وأيضا رمز أيضا التي هي في الزاوية اليسرى للأمام العنوان.

ويجب أن تكون قادرة على تجاوز الحدث عند_الإغلاق النموذج. وهذا أمر شائع عندما يكون يقلل الطلب إلى علبة النظام عندما "مغلق".

وعند الضغط على مربع X في النموذج. ويتم Form1_Closing أولا، ثم يتم Form1_Closed.

ووe.Cancel = True في Form1_Closing - يمنع Form1_Closed من يطلق عليه، وترك النموذج الخاص بك لا تزال نشطة

ومنع لإغلاق النموذج، ولكن إخفائه:

Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    Me.WindowState = FormWindowState.Minimized 
    Me.Visible=false
    e.Cancel = True
End Sub

ويمكنك تعيين الخاصية ControlBox إلى False، ولكن شريط العنوان كله أن يكون قد انتهى ولكن العنوان نفسه ...

وماذا jmweb قال هنا هو OK كذلك. على زر X قريب لا تذهب إذا قمت بإلغاء الحدث على شكل الإغلاق. لكنه لا يفعل ذلك، تحتاج للافراج عن العمليات احتياجات النموذج ومن ثم إغلاق النموذج.

Me.Dispose()
Me.Close()

وهذا عمل بالنسبة لي باستخدام قطاع القائمة.

واختر (أو النقر) النموذج نفسه انقر على الأحداث في إطار الخصائص (قليلا البرق رمز الترباس). ابحث عن Form.Closing وفوقه مزدوجة. ثم اكتب: e.cancel=true

صنع نموذج دون شريط العناوين في Visual Basic.

والذهاب إلى Form Properties وتعيين كل ControlBox وShowIcon إلى false.

وبعد ذلك، واضحة على عن كما نص من الممتلكات text للنموذج.

ويذهب إلى خصائص وحدد من طراز بالملل لأن أيا

ما عليك سوى اختيار الشكل المطلوب وفي قسم خصائص، تعيين مربع_عنصر_التحكم = كاذبة التي عملت فقط بالنسبة لي:)

Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    Beep()
    e.Cancel = True
End Sub
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top