Yalnızca Kapat (x) düğmesi nasıl gizlenir?


151

Kalıcı bir iletişim kutum var ve Kapat (X) düğmesini gizlemem gerekiyor, ancak kullanamıyorum ControlBox = false, çünkü Küçült ve Ekranı Kapla düğmelerini tutmam gerekiyor.

Sadece Kapat düğmesini gizlemem gerekiyor, bunu yapmanın bir yolu var mı?

Çok teşekkürler!

Güncelleme: Devre dışı bırakma iznim vardı, bu daha basit :) Teşekkürler!


Bunu istiyor yuo neyi olabilir: [Gizle Kapatma Düğmesi [X] Win Formlar C # .NET içinde] ( sameeramrutia.wordpress.com/2008/09/16/... ) sadece googled: hide close button c#İkinci sonuç burada! =)
Miguel Angelo

yanlış, devre dışı bırakmak istemiyorum düğmesi, ama gizlemek .. u bir çözüm bulmak mümkün?
stefano m

8
İhtiyaç güçlü bir kelimedir. Bu gereksinim nereden geliyor? Gerçek gereksinim nedir - kullanıcının programı sonlandıramaması veya kullanıcı arayüzünün "kapat düğmesi yok gibi görünmesi"? Bunun dışında başka yollar da var ve hepsini tamamen kapatmak için zorlanacaksınız (örneğin görev yöneticisi, taskkill, muhtemelen alt + f4, vb.). Kişisel olarak bu konuda çok fazla çalışmazdım, çünkü tüm uygulamanızı nasıl tekrar kaplamıyorsanız, çaba harcanacak ve diğer Windows programlarıyla kullanıcı beklentilerini / sürekliliğini bozacaktır.
Merlyn Morgan-Graham

4
@Sayem bu sayfayı ortaya koyuyor, bu yüzden böyle bir eleştirmen olma.
Brian Graham

1
Listenizdeki simge durumuna küçült düğmesini de çizin. Kalıcı bir iletişim kutusunu en aza indirmek otomatik olarak kapatır. Gerekirse, hala etkin olan tek pencere kaldı. Simge durumuna küçültdüğünüzde, kullanıcı yine de programınıza geri dönemeyecek şekilde odağı alabilecek bir pencere kalmazdı. Şu an "bu hala mantıklı mı?" bölge. Öyle değil.
Hans Passant

Yanıtlar:


148

Gizleyemezsiniz, ancak formun CreateParams özelliğini geçersiz kılarak devre dışı bırakabilirsiniz.

private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
    get
    {
       CreateParams myCp = base.CreateParams;
       myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
       return myCp;
    }
}

Kaynak: http://www.codeproject.com/KB/cs/DisableClose.aspx


teşekkürler, ben bu çözümü buldum, ama biz sadece devre dışı değil, gizlemek istiyorum :( anywat teşekkürler!
stefano m

4
formunuzu sıfırdan tasarlamaktan başka bir yol yoktur.
Daniel A. White

Evet. kendi formunuzu kendi kontrol kutunuzla kapat düğmesi olmadan daha iyi hale getirin ve ardından ana formun kontrol kutusunu gizleyin.
Bahamut

'Abhishek.Chopra' dan cevap basit ve etkilidir.
Altaf Patel

Çalışma zamanı sırasında tekrar nasıl etkinleştirilir?
Mike de Klerk

158

Formdaki kapat düğmesini ayarlayarak gizleyebiliriz this.ControlBox=false;


29
Bunun bir seçenek olmadığını belirten soruyu okudunuz mu?
2012'de

28
Bir Google araması yaptı ve bu SO QA en çok hit oldu. Ve bu cevap aradığım şeydi. Teşekkürler Abhishek ...
Abel Gaxiola

15
Bu tüm boyutlandırma düğmelerini gizler. Sadece X değil
Rich Shealer

1
Çok teşekkür ederim! En kolay yol.

26

Tüm sistem menüsünü kaldırarak gizleyebilirsiniz:

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

Elbette bunu yaparak simge durumuna küçültme ve simge durumuna küçültme düğmeleri kaldırılır.

Sistem menüsünü koruyup kapat öğesini kaldırırsanız kapat düğmesi kalır ancak devre dışı bırakılır.

Son alternatif, müşteri olmayan alanı kendiniz boyamaktır. Doğru yapmak oldukça zor.


4
Bu da işe yarıyor harika! Ancak ControlBox = false yönteminin kullanımı kolaydır.
simmeone

1
Bu, ControlBoxfalse değerine ayarlamakla aynıdır . Ayrıca, gereksinimi de
ortadan kaldırır:

23

kullanarak kapat kutusunu gizleyebilirsiniz

this.ControlBox = false;

ve beyaz boşluk eklemek unutmayın this.Text = " "Böyle yapmak için

resim açıklamasını buraya girin


2
Buna ihtiyacım var. Teşekkürler.
Kosmas

2
Bu doğru değil. Doğrudan OP'ın sorudan: kullanamıyorumControlBox = false
Martin

8

Gerçekten "görünür değil" gibi gizlemek istiyorsanız, muhtemelen kenarlıksız bir form oluşturmanız ve altyazı bileşenlerini kendiniz çizmeniz gerekecektir. VisualStyles kitaplığında Windows Öğeleri bulunur. Ayrıca, altyazı çubuğunu yakalayarak formu yeniden boyutlandırma veya formu taşıma işlevini de eklemeniz gerekir. Köşedeki sistem menüsünden bahsetmiyorum bile.

Çoğu durumda, özellikle de yetenekleri en aza indirgeyen kalıcı bir form istediğinizde, "kapat" düğmesinin kullanılabilir olmadığını doğrulamak zordur. Kalıcı bir formu en aza indirmek gerçekten mantıklı değil.


2

Formunuzun özelliklerinde 'Denetim Kutusu' = Yanlış olarak ayarlandı ancak Küçültülmüş ve Ekranı Kapla seçeneklerini de gizler.


1

Kapatma düğmesini FormBorderStyle'ı özellikler bölümünden değiştirerek veya yapıcıda programlı olarak kullanarak gizleyebilirsiniz:

public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}

ardından uygulamadan çıkmak için bir menü şeridi öğesi oluşturursunuz.

şerefe

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.