Bagikan melalui


Arsitektur Kontrol ToolStrip

Kelas ToolStrip dan ToolStripItem menyediakan sistem yang fleksibel dan dapat diperluas untuk menampilkan toolbar, status, dan item menu. Semua kelas ini terkandung dalam System.Windows.Forms namespace layanan dan semuanya biasanya dinamai dengan awalan "ToolStrip" (seperti ToolStripOverflow) atau dengan akhiran "Strip" (seperti MenuStrip).

ToolStrip

Topik berikut menjelaskan ToolStrip dan kontrol yang berasal darinya.

ToolStrip adalah kelas dasar abstrak untuk MenuStrip, StatusStrip, dan ContextMenuStrip. Model objek berikut menunjukkan ToolStrip hierarki pewarisan.

Diagram that shows the ToolStrip object model.

Anda dapat mengakses semua item dalam koleksi ToolStripItems . Anda dapat mengakses semua item dalam koleksi ToolStripDropDownItemDropDownItems . Di kelas yang berasal dari ToolStrip, Anda juga dapat menggunakan DisplayedItems properti untuk mengakses hanya item yang saat ini ditampilkan. Ini adalah item yang saat ini tidak berada dalam menu luapan.

Item berikut dirancang khusus untuk bekerja dengan mulus dengan baik ToolStripSystemRenderer dan ToolStripProfessionalRenderer dalam semua orientasi. Mereka tersedia secara default pada waktu desain untuk ToolStrip kontrol:

MenuStrip adalah kontainer tingkat atas yang menggantikan MainMenu. Ini juga menyediakan penanganan kunci dan beberapa fitur antarmuka dokumen (MDI). Secara fungsional, ToolStripDropDownItem dan ToolStripMenuItem bekerja bersama dengan MenuStrip, meskipun berasal dari ToolStripItem.

Item berikut dirancang khusus untuk bekerja dengan mulus dengan baik ToolStripSystemRenderer dan ToolStripProfessionalRenderer dalam semua orientasi. Mereka tersedia secara default pada waktu desain untuk MenuStrip kontrol:

StatusStrip

StatusStrip menggantikan StatusBar kontrol. Fitur StatusStrip khusus termasuk tata letak tabel kustom, dukungan untuk ukuran formulir dan genggaman bergerak, dan Spring properti , yang memungkinkan untuk mengisi ruang yang ToolStripStatusLabel tersedia secara otomatis.

Item berikut dirancang khusus untuk bekerja dengan mulus dengan baik ToolStripSystemRenderer dan ToolStripProfessionalRenderer dalam semua orientasi. Mereka tersedia secara default pada waktu desain untuk StatusStrip kontrol:

ContextMenuStrip

ContextMenuStripContextMenumenggantikan . Anda dapat mengaitkan ContextMenuStrip dengan kontrol apa pun, dan klik kanan mouse secara otomatis menampilkan menu konteks (atau menu pintasan). Anda dapat menampilkan secara ContextMenuStrip terprogram dengan menggunakan metode .Show ContextMenuStrip mendukung pembatalan Opening dan Closing peristiwa untuk menangani populasi dinamis dan skenario beberapa klik. ContextMenuStrip mendukung gambar, status pemeriksaan item menu, teks, kunci akses, pintasan, dan menu berskala.

Item berikut dirancang khusus untuk bekerja dengan mulus dengan baik ToolStripSystemRenderer dan ToolStripProfessionalRenderer dalam semua orientasi. Mereka tersedia secara default pada waktu desain untuk ContextMenuStrip kontrol:

Fitur Generik ToolStrip

Topik berikut menjelaskan fitur dan perilaku yang umum untuk ToolStrip kontrol dan turunan.

Lukisan

Anda dapat melakukan lukisan kustom dalam kontrol dalam ToolStrip beberapa cara. Seperti halnya kontrol Formulir Windows lainnya, ToolStrip dan ToolStripItem keduanya memiliki metode dan Paint peristiwa yang dapat OnPaint diambil alih. Seperti halnya lukisan reguler, sistem koordinat relatif terhadap area klien kontrol; artinya, sudut kiri atas kontrol adalah 0, 0. Peristiwa Paint dan OnPaint metode untuk perilaku ToolStripItem seperti peristiwa cat kontrol lainnya.

Kontrol juga ToolStrip menyediakan akses yang lebih baik ke penyajian item dan kontainer melalui ToolStripRenderer kelas , yang memiliki metode yang dapat diganti untuk melukis latar belakang, latar belakang item, gambar item, panah item, teks item, dan batas ToolStrip. Argumen peristiwa untuk metode ini mengekspos beberapa properti seperti persegi panjang, warna, dan format teks yang dapat Anda sesuaikan sesuai keinginan.

Untuk menyesuaikan hanya beberapa aspek tentang bagaimana item dicat, Anda biasanya mengambil alih ToolStripRenderer.

Jika Anda menulis item baru dan ingin mengontrol semua aspek lukisan, ambil alih OnPaint metode . Dari dalam OnPaint, Anda dapat menggunakan metode dari ToolStripRenderer.

Secara default, ToolStrip di-buffer ganda, memanfaatkan OptimizedDoubleBuffer pengaturan.

Orangtua

Konsep kepemilikan kontainer dan pengasuhan lebih kompleks dalam ToolStrip kontrol daripada di kontrol kontainer Formulir Windows lainnya. Hal ini diperlukan untuk mendukung skenario dinamis seperti luapan, berbagi item drop-down di beberapa ToolStrip item, dan untuk mendukung pembuatan ContextMenuStrip dari kontrol.

Daftar berikut ini menjelaskan anggota yang terkait dengan pengasuhan dan menjelaskan penggunaannya.

Perilaku Kontrol yang Diwariskan

Kontrol berikut dikunci setiap kali digunakan dalam pewarisan:

Misalnya, buat aplikasi Formulir Windows baru dengan menggunakan satu atau beberapa kontrol di daftar sebelumnya. Atur pengubah akses dari satu atau beberapa kontrol ke public atau protected, lalu buat proyek. Tambahkan formulir yang mewarisi dari formulir pertama, lalu pilih kontrol yang diwariskan. Kontrol tampak terkunci, berulah seolah-olah pengubah aksesnya adalah private.

ToolStripContainer Dukungan Warisan

Kontrol ToolStripContainer mendukung skenario yang diwariskan terbatas, mirip dengan contoh berikut:

  1. Buat aplikasi Formulir Windows baru.

  2. ToolStripContainer Tambahkan ke formulir.

  3. Atur pengubah akses ke ToolStripContainerpublic atau protected.

  4. Tambahkan kombinasi ToolStripkontrol , MenuStrip, dan ContextMenuStrip apa pun ke ToolStripPanel wilayah ToolStripContainer.

  5. Bangun proyek.

  6. Tambahkan formulir yang mewarisi dari formulir pertama.

  7. Pilih yang diwariskan ToolStripContainer pada formulir.

Perilaku Kontrol Anak yang Diwariskan

Setelah Anda menyelesaikan langkah-langkah sebelumnya, perilaku yang diwariskan berikut terjadi:

Kepercayaan Sebagian

Batasan ToolStripkepercayaan parsial dirancang untuk mencegah masuknya informasi pribadi yang tidak disengaja yang mungkin digunakan oleh orang atau layanan yang tidak sah. Langkah-langkah perlindungannya adalah sebagai berikut:

  • ToolStripDropDown kontrol harus AllWindows menampilkan item dalam ToolStripControlHost. Ini berlaku untuk kontrol intrinsik seperti ToolStripTextBox, , ToolStripComboBoxdan ToolStripProgressBar serta untuk kontrol yang dibuat pengguna. Jika persyaratan ini tidak terpenuhi, item ini tidak ditampilkan. Tidak ada pengecualian yang ditampilkan.

  • Mengatur properti ke AutoClosefalse tidak diizinkan, dan parameter peristiwa yang dapat Closing dibatalkan diabaikan. Ini membuatnya tidak mungkin memasukkan lebih dari satu penekanan tombol tanpa mengabaikan item drop-down. Jika persyaratan ini tidak terpenuhi, item tersebut tidak ditampilkan. Tidak ada pengecualian yang ditampilkan.

  • Banyak peristiwa penanganan keystroke tidak akan dimunculkan jika terjadi dalam konteks kepercayaan parsial selain AllWindows.

  • Kunci akses tidak diproses ketika AllWindows tidak diberikan.

Penggunaan

Pola penggunaan berikut memiliki bantalan pada ToolStrip tata letak, interaksi keyboard, dan perilaku pengguna akhir:

  • Bergabung dalam ToolStripPanel

    ToolStrip dapat direposisi dalam ToolStripPanel dan di seluruhToolStripPanel. Properti Dock diabaikan, dan jika Stretch properti adalah false, ukuran tumbuh ToolStrip saat item ditambahkan ke ToolStripPanel. Biasanya, ToolStrip tidak berpartisipasi dalam urutan tab.

  • Ditambatkan

    ToolStrip ditempatkan di satu sisi kontainer dalam posisi tetap, dan ukurannya diperluas di seluruh tepi tempat kontainer ditampung. Biasanya, ToolStrip tidak berpartisipasi dalam urutan tab.

  • Benar-benar diposisikan

    ToolStrip seperti kontrol lain, karena ditempatkan oleh Location properti, memiliki ukuran tetap, dan biasanya berpartisipasi dalam urutan tab.

Interaksi Keyboard

Kunci Akses

Dikombinasikan dengan atau mengikuti tombol ALT, tombol akses adalah salah satu cara untuk mengaktifkan kontrol menggunakan keyboard. ToolStrip mendukung kunci akses eksplisit dan implisit. Definisi eksplisit menggunakan karakter ampersand (&) sebelum huruf. Definisi implisit menggunakan algoritma yang mencoba menemukan item yang cocok berdasarkan urutan karakter dalam properti tertentu Text .

Kunci pintasan

Tombol pintasan yang MenuStrip digunakan oleh menggunakan kombinasi Keys enumerasi (yang tidak spesifik untuk menentukan kunci pintasan. Anda juga dapat menggunakan ShortcutKeyDisplayString properti untuk menampilkan kunci pintasan dengan teks saja, seperti menampilkan "Del" alih-alih "Hapus."

Kunci ALT mengaktifkan yang MenuStrip ditujukan ke .MainMenuStrip Dari sana, CTRL+TAB menavigasi antar ToolStrip kontrol dalam ToolStripPanels. Tombol TAB dan tombol panah pada keypad numerik menavigasi di antara item dalam ToolStrip. Algoritma khusus menangani navigasi di wilayah luapan. SPACEBAR memilih ToolStripButton, , ToolStripDropDownButtonatau ToolStripSplitButton.

Fokus dan Validasi

Ketika diaktifkan oleh kunci ALT, MenuStrip atau ToolStrip biasanya tidak mengambil atau menghapus fokus dari kontrol yang saat ini memiliki fokus. Jika ada kontrol yang dihosting dalam MenuStrip drop-down MenuStripatau , kontrol mendapatkan fokus saat pengguna menekan tombol TAB. Secara umum, GotFocusperistiwa MenuStrip , LostFocus, Enter, dan Leave mungkin tidak dinaikkan ketika diaktifkan oleh keyboard. Dalam kasus seperti itu, gunakan peristiwa dan MenuDeactivate sebagai gantinyaMenuActivate.

Secara default, CausesValidation adalah false. Panggil Validate secara eksplisit pada formulir Anda untuk melakukan validasi.

Tata letak

Anda mengontrol ToolStrip tata letak dengan memilih salah satu anggota ToolStripLayoutStyle dengan LayoutStyle properti .

Tata Letak Tumpukan

Tumpukan adalah pengaturan item di samping satu sama lain di kedua ujung ToolStrip. Daftar berikut ini menjelaskan tata letak tumpukan.

Fitur Tata Letak Tumpukan Lainnya

Alignment menentukan akhir ToolStrip di mana item diratakan.

Ketika item tidak pas dalam tombol ToolStrip, luapan akan muncul secara otomatis. Overflow Pengaturan properti menentukan apakah item muncul di area luapan selalu, sesuai kebutuhan, atau tidak pernah.

Dalam peristiwa tersebut LayoutCompleted , Anda dapat memeriksa Placement properti untuk menentukan apakah item ditempatkan di utama ToolStrip, luapan ToolStrip, atau jika saat ini tidak ditampilkan sama sekali. Alasan umum mengapa item tidak ditampilkan adalah bahwa item tidak cocok pada utama ToolStrip dan propertinya Overflow diatur ke Never.

Buat bergerak ToolStrip dengan memasukkannya ke dalam ToolStripPanel dan mengaturnya GripStyle ke Visible.

Opsi Tata Letak Lainnya

Opsi tata letak lainnya adalah Flow dan Table.

Tata Letak Alur

Flow tata letak adalah default untuk ContextMenuStrip, ToolStripDropDownMenu, dan ToolStripOverflow. Ini mirip FlowLayoutPaneldengan . Fitur Flow tata letak adalah sebagai berikut:

Tata Letak Tabel

Table tata letak adalah default untuk StatusStrip. Ini mirip TableLayoutPaneldengan . Fitur Flow tata letak adalah sebagai berikut:

ToolStripItem

Topik berikut menjelaskan ToolStripItem dan kontrol yang berasal darinya.

ToolStripItemadalah kelas dasar abstrak untuk semua item yang masuk ke .ToolStrip Model objek berikut menunjukkan ToolStripItem hierarki pewarisan.

Diagram that shows the ToolStripItem object model.

ToolStripItem kelas baik mewarisi langsung dari ToolStripItem, atau mereka mewarisi secara tidak langsung dari ToolStripItem melalui ToolStripControlHost atau ToolStripDropDownItem.

ToolStripItemkontrol harus terkandung dalam ToolStrip, , MenuStripStatusStrip, atau ContextMenuStrip dan tidak dapat ditambahkan langsung ke formulir. Berbagai kelas kontainer dirancang untuk berisi subset ToolStripItem kontrol yang sesuai.

Tabel berikut mencantumkan kontrol stok ToolStripItem dan kontainer di mana mereka terlihat terbaik. Meskipun item apa pun ToolStrip dapat dihosting dalam kontainer -turunan apa pun ToolStrip, item ini dirancang untuk terlihat terbaik dalam kontainer berikut:

Catatan

ToolStripDropDown tidak muncul di kotak alat perancang.

Item terkandung ToolStrip MenuStrip ContextMenuStrip StatusStrip ToolStripDropDown
ToolStripButton Ya No No No Ya
ToolStripComboBox Ya Ya Ya No Ya
ToolStripSplitButton Ya No No Ya Ya
ToolStripLabel Ya No No Ya Ya
ToolStripSeparator Ya Ya Ya No Ya
ToolStripDropDownButton Ya No No Ya Ya
ToolStripTextBox Ya Ya Ya No Ya
ToolStripMenuItem No Ya Ya No No
ToolStripStatusLabel No No No Ya No
ToolStripProgressBar Ya No No Ya No
ToolStripControlHost Ya Ya No Ya Ya

ToolStripButton

ToolStripButton adalah item tombol untuk ToolStrip. Anda dapat menampilkannya dengan berbagai gaya batas, dan Anda dapat menggunakannya untuk mewakili dan mengaktifkan status operasional. Anda juga dapat menentukannya untuk memiliki fokus secara default.

ToolStripLabel

ToolStripLabel menyediakan fungsionalitas label dalam ToolStrip kontrol. ToolStripLabel adalah seperti ToolStripButton yang tidak mendapatkan fokus secara default dan yang tidak dirender sebagai didorong atau disorot.

ToolStripLabel sebagai item yang dihosting mendukung kunci akses.

LinkColorGunakan properti , LinkVisited, dan LinkBehavior pada ToolStripLabel untuk mendukung kontrol tautan di ToolStrip.

ToolStripStatusLabel

ToolStripStatusLabel adalah versi yang ToolStripLabel dirancang khusus untuk digunakan dalam StatusStrip. Fitur khusus termasuk BorderStyle, BorderSides, dan Spring.

ToolStripSeparator

menambahkan ToolStripSeparator garis vertikal atau horizontal ke toolbar atau menu, tergantung pada orientasinya. Ini menyediakan pengelompokan atau perbedaan antara item, seperti yang ada di menu.

Anda dapat menambahkan ToolStripSeparator pada waktu desain dengan memilihnya dari daftar drop-down. Namun, Anda juga dapat membuat ToolStripSeparator secara otomatis dengan mengetik tanda hubung (-) di simpul templat perancang atau dalam Add metode .

ToolStripControlHost

ToolStripControlHost adalah kelas dasar abstrak untuk ToolStripComboBox, ToolStripTextBox, dan ToolStripProgressBar. ToolStripControlHost dapat menghosting kontrol lain, termasuk kontrol kustom, dengan dua cara:

  • Buat ToolStripControlHost dengan kelas yang berasal dari Control. Untuk sepenuhnya mengakses kontrol dan properti yang dihosting, Anda harus mentransmisikan Control kembali properti ke kelas aktual yang diwakilinya.

  • Perluas ToolStripControlHost, dan dalam konstruktor tanpa parameter kelas yang diwariskan, panggil konstruktor kelas dasar yang melewati kelas yang berasal dari Control. Opsi ini memungkinkan Anda membungkus metode kontrol dan properti umum untuk akses mudah dalam ToolStrip.

ToolStripComboBox

ToolStripComboBox adalah yang dioptimalkan ComboBox untuk hosting dalam ToolStrip. Subset properti dan peristiwa kontrol yang dihosting diekspos pada tingkat , ToolStripComboBox tetapi kontrol yang mendasar ComboBox sepenuhnya dapat diakses melalui ComboBox properti .

ToolStripTextBox

ToolStripTextBox adalah yang dioptimalkan TextBox untuk hosting dalam ToolStrip. Subset properti dan peristiwa kontrol yang dihosting diekspos pada tingkat , ToolStripTextBox tetapi kontrol yang mendasar TextBox sepenuhnya dapat diakses melalui TextBox properti .

ToolStripProgressBar

ToolStripProgressBar adalah yang dioptimalkan ProgressBar untuk hosting dalam ToolStrip. Subset properti dan peristiwa kontrol yang dihosting diekspos pada tingkat , ToolStripProgressBar tetapi kontrol yang mendasar ProgressBar sepenuhnya dapat diakses melalui ProgressBar properti .

ToolStripDropDownItem

ToolStripDropDownItem adalah kelas dasar abstrak untuk ToolStripMenuItem, , ToolStripDropDownButtondan ToolStripSplitButton, yang dapat menghosting item secara langsung atau menghosting item tambahan dalam kontainer drop-down. Anda melakukan ini dengan mengatur DropDown properti ke ToolStripDropDown dan mengatur Items properti dari ToolStripDropDown. Akses item drop-down ini langsung melalui DropDownItems properti .

ToolStripMenuItem

ToolStripMenuItemToolStripDropDownItem adalah yang berfungsi dengan ToolStripDropDownMenu dan ContextMenuStrip untuk menangani penyorotan khusus, tata letak, dan susunan kolom untuk menu.

ToolStripDropDownButton

ToolStripDropDownButton terlihat seperti ToolStripButton, tetapi menampilkan area drop-down saat pengguna mengkliknya. Sembunyikan atau perlihatkan panah turun bawah dengan mengatur ShowDropDownArrow properti . ToolStripDropDownButtonmenghosting ToolStripOverflowButton yang menampilkan item yang meluap.ToolStrip

ToolStripSplitButton

ToolStripSplitButton menggabungkan fungsionalitas tombol dan tombol drop-down.

DefaultItem Gunakan properti untuk menyinkronkan Click peristiwa item drop-down yang dipilih dengan item yang diperlihatkan pada tombol .

Fitur Generik ToolStripItem

ToolStripItem menyediakan fitur dan opsi umum berikut untuk mewarisi kontrol:

  • Peristiwa inti

  • Penanganan gambar

  • Penjajaran

  • Hubungan teks dan gambar

  • Gaya tampilan

Peristiwa Inti

ToolStripItem kontrol menerima peristiwa klik, mouse, dan cat mereka sendiri, dan dapat melakukan beberapa praproscesing keyboard juga.

Penanganan Gambar

Properti Image, , ImageIndexImageAlign, ImageKey, dan ImageScaling berkaitan dengan berbagai aspek penanganan gambar. Gunakan gambar dalam ToolStrip kontrol dengan mengatur properti ini secara langsung atau dengan mengatur properti run-time-only ImageList .

Penskalaan gambar ditentukan oleh interaksi properti di dan ToolStripToolStripItem, sebagai berikut:

Penjajaran

Nilai Alignment properti menentukan akhir ToolStrip tempat item muncul. Properti Alignment hanya berfungsi ketika gaya ToolStrip tata letak diatur ke salah satu nilai luapan tumpukan.

Item ditempatkan pada ToolStrip urutan item muncul di kumpulan Item. Untuk mengubah secara terprogram di mana item ditata, gunakan Insert metode untuk memindahkan item dalam koleksi. Metode ini memindahkan item tetapi tidak menduplikasinya.

Hubungan Teks dan Gambar

Properti TextImageRelation menentukan penempatan relatif gambar sehubungan dengan teks pada ToolStripItem. Item yang tidak memiliki gambar, teks, atau keduanya diperlakukan sebagai kasus khusus sehingga ToolStripItem tidak menampilkan titik kosong untuk elemen atau elemen yang hilang.

Gaya Tampilan

DisplayStyle memungkinkan Anda mengatur nilai properti Teks dan Gambar item sambil hanya menampilkan apa yang Anda inginkan. Ini biasanya digunakan untuk hanya mengubah gaya tampilan saat menampilkan item yang sama dalam konteks yang berbeda.

Kelas Aksesori

Kelas yang menyediakan berbagai fungsionalitas lainnya meliputi:

Baca juga