Bagaimana cara menyembunyikan hanya tombol Tutup (x)?


151

Saya memiliki dialog modal, dan perlu menyembunyikan tombol Tutup (X), tetapi saya tidak dapat menggunakan ControlBox = false, karena saya perlu menjaga tombol Minimalkan dan Maksimalkan.

Saya perlu menyembunyikan hanya tombol Tutup, apakah ada cara untuk melakukan itu?

Terima kasih banyak!

Pembaruan: Saya memiliki izin untuk menonaktifkannya, yang lebih sederhana :) Terima kasih semua!


Mungkinkah ini yang Anda inginkan: [Sembunyikan Tombol Tutup [X] dari Formulir Win di C # .NET] ( sameeramrutia.wordpress.com/2008/09/16/… ) baru saja googled :,hide close button c# hasil kedua di sini! =)
Miguel Angelo

Anda salah, saya tidak ingin tombol menonaktifkan, tetapi menyembunyikannya .. apakah Anda dapat menemukan solusi?
stefano m

8
Kebutuhan adalah kata yang kuat. Dari mana datangnya persyaratan ini? Apa persyaratan sebenarnya - bahwa pengguna tidak dapat menghentikan program, atau bahwa UI "sepertinya tidak memiliki tombol tutup"? Karena ada cara lain untuk mengatasi ini, dan Anda akan sulit sekali untuk benar-benar menutup semuanya (mis. Task manager, taskkill, mungkin alt + f4, dll). Saya pribadi tidak akan bekerja terlalu keras dalam hal ini, karena kecuali Anda kembali menguliti seluruh aplikasi Anda, itu akan sia-sia, dan menghancurkan harapan / kontinuitas pengguna dengan program Windows lainnya.
Merlyn Morgan-Graham

4
@Sayem itu mengungkapkan halaman ini, jadi jangan kritik seperti itu.
Brian Graham

1
Gosok tombol perkecil dari daftar Anda juga. Meminimalkan dialog modal akan secara otomatis membuatnya menutup. Seharusnya begitu, itu adalah satu-satunya jendela yang masih diaktifkan. Ketika Anda menguranginya, tidak akan ada jendela yang tersisa yang masih bisa mendapatkan fokus sehingga pengguna tidak dapat kembali ke program Anda. Anda sekarang berada di "apakah ini masih masuk akal?" wilayah. Tidak.
Hans Passant

Jawaban:


148

Anda tidak bisa menyembunyikannya, tetapi Anda bisa menonaktifkannya dengan mengganti properti CreateParams dari formulir.

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;
    }
}

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


terima kasih, saya menemukan solusi ini, tetapi kami ingin menyembunyikannya, tidak hanya menonaktifkan :( anywat, terima kasih!
stefano m

4
tidak ada cara lain selain mendesain formulir Anda dari awal.
Daniel A. White

ya. lebih baik buat formulir Anda sendiri dengan kotak kontrol Anda sendiri tanpa tombol tutup kemudian sembunyikan kotak kontrol formulir induk.
Bahamut

Jawaban dari 'Abhishek.Chopra' sederhana dan efektif.
Altaf Patel

Bagaimana cara mengaktifkannya saat runtime lagi?
Mike de Klerk

158

Kita dapat menyembunyikan tombol tutup pada formulir dengan mengatur this.ControlBox=false;


29
Apakah Anda membaca pertanyaan di mana ia menentukan bahwa itu bukan pilihan?
Servy

28
Melakukan pencarian Google dan SO QA ini adalah hit teratas. Dan jawaban ini adalah apa yang saya cari. Abhishek terima kasih ...
Abel Gaxiola

15
Itu menyembunyikan semua tombol ukuran itu. Bukan hanya X.
Rich Shealer

1
Terima kasih banyak! Cara termudah.

26

Nah, Anda bisa menyembunyikannya, dengan menghapus seluruh menu sistem:

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

Tentu saja, melakukan itu akan menghapus tombol perkecil dan maksimalkan.

Jika Anda menyimpan menu sistem tetapi menghapus item tutup maka tombol tutup tetap tetapi dinonaktifkan.

Alternatif terakhir adalah mengecat area non-klien sendiri. Cukup sulit untuk memperbaikinya.


4
Ini juga berhasil, hebat! Tetapi ControlBox = false mudah digunakan sebagai cara Anda.
simmeone

1
Ini sama dengan pengaturan ControlBoxke false. Juga, itu gagal persyaratan: Saya harus menjaga tombol Minimalkan dan Maksimalkan
whiteshooz

23

Anda dapat menyembunyikan kotak tertutup dengan menggunakan

this.ControlBox = false;

dan jangan lupa menambahkan spasi this.Text = " "untuk membuatnya seperti ini

masukkan deskripsi gambar di sini


2
Ini yang saya butuhkan. Terima kasih.
Kosmas

2
Ini tidak benar. Langsung dari pertanyaan OP: Saya tidak bisa menggunakanControlBox = false
Martin

8

Jika Anda benar-benar ingin menyembunyikannya, seperti pada "tidak terlihat", maka Anda mungkin harus membuat formulir tanpa batas dan menggambar sendiri komponen teks. Pustaka VisualStyles memiliki Elemen Windows yang tersedia. Anda juga harus menambahkan kembali fungsi mengubah ukuran formulir atau memindahkan formulir dengan meraih bilah keterangan. Belum lagi menu sistem di sudut.

Dalam kebanyakan kasus, sulit untuk membenarkan memiliki tombol "tutup" tidak tersedia, terutama ketika Anda menginginkan bentuk modal dengan kemampuan meminimalkan. Meminimalkan bentuk modal benar-benar tidak masuk akal.


2

Dalam properti form Anda, atur 'Control Box' = False tetapi akan menyembunyikan juga Diminimalkan dan Maksimalkan.


1

Anda bisa menyembunyikan tombol tutup dengan mengubah FormBorderStyle dari bagian properti atau secara terprogram dalam konstruktor menggunakan:

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

maka Anda membuat item strip menu untuk keluar dari aplikasi.

Bersulang

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.