Bagikan melalui


Opsi Ukuran di Kontrol Formulir Windows DataGridView

DataGridView baris, kolom, dan header dapat mengubah ukuran sebagai akibat dari banyak kemunculan yang berbeda. Tabel berikut menunjukkan kemunculan ini.

Kemunculan Deskripsi
Mengubah ukuran pengguna Pengguna dapat membuat penyesuaian ukuran dengan menyeret atau mengklik dua kali pembagi baris, kolom, atau header.
Mengubah ukuran kontrol Dalam mode isian kolom, lebar kolom berubah saat lebar kontrol berubah; misalnya, ketika kontrol ditampung ke formulir induknya dan pengguna mengubah ukuran formulir.
Perubahan nilai sel Dalam mode ukuran otomatis berbasis konten, ukuran berubah agar pas dengan nilai tampilan baru.
Panggilan metode Mengubah ukuran berbasis konten terprogram memungkinkan Anda membuat penyesuaian ukuran oportunistik berdasarkan nilai sel pada saat panggilan metode.
Pengaturan properti Anda juga dapat mengatur nilai tinggi dan lebar tertentu.

Secara default, perubahan ukuran pengguna diaktifkan, ukuran otomatis dinonaktifkan, dan nilai sel yang lebih lebar dari kolom mereka diklip.

Tabel berikut ini memperlihatkan skenario yang bisa Anda gunakan untuk menyesuaikan perilaku default atau menggunakan opsi ukuran tertentu untuk mencapai efek tertentu.

Skenario implementasi
Gunakan mode isian kolom untuk menampilkan data berukuran sama dalam jumlah kolom yang relatif kecil yang menempati seluruh lebar kontrol tanpa menampilkan bilah gulir horizontal. Atur properti AutoSizeColumnsMode ke Fill.
Gunakan mode isian kolom dengan nilai tampilan dengan berbagai ukuran. Atur properti AutoSizeColumnsMode ke Fill. Inisialisasi lebar kolom relatif dengan mengatur properti kolom FillWeight atau dengan memanggil metode kontrol AutoResizeColumns setelah mengisi kontrol dengan data.
Gunakan mode isian kolom dengan nilai yang sangat penting. Atur properti AutoSizeColumnsMode ke Fill. Atur nilai besar MinimumWidth untuk kolom yang harus selalu menampilkan beberapa datanya atau menggunakan opsi ukuran selain mode isian untuk kolom tertentu.
Gunakan mode isian kolom untuk menghindari tampilan latar belakang kontrol. Atur AutoSizeMode properti kolom terakhir ke Fill dan gunakan opsi ukuran lain untuk kolom lain. Jika kolom lain menggunakan terlalu banyak ruang yang tersedia, atur MinimumWidth properti kolom terakhir.
Tampilkan kolom lebar tetap, seperti ikon atau kolom ID. Atur AutoSizeMode ke None dan Resizable ke False untuk kolom . Inisialisasi lebarnya dengan mengatur Width properti atau dengan memanggil metode kontrol AutoResizeColumn setelah mengisi kontrol dengan data.
Sesuaikan ukuran secara otomatis setiap kali konten sel berubah untuk menghindari kliping dan untuk mengoptimalkan penggunaan ruang. Atur properti ukuran otomatis ke nilai yang mewakili mode ukuran berbasis konten. Untuk menghindari penalti performa saat bekerja dengan data dalam jumlah besar, gunakan mode ukuran yang menghitung baris yang ditampilkan saja.
Sesuaikan ukuran agar pas dengan nilai dalam baris yang ditampilkan untuk menghindari penalti performa saat bekerja dengan banyak baris. Gunakan nilai enumerasi mode ukuran yang sesuai dengan ukuran otomatis atau terprogram. Untuk menyesuaikan ukuran agar pas dengan nilai di baris yang baru ditampilkan saat menggulir, panggil metode mengubah ukuran dalam penanganan Scroll aktivitas. Untuk mengkustomisasi perubahan ukuran klik ganda pengguna sehingga hanya nilai dalam baris yang ditampilkan yang menentukan ukuran baru, panggil metode mengubah ukuran dalam RowDividerDoubleClick penanganan aktivitas atau ColumnDividerDoubleClick .
Sesuaikan ukuran agar pas dengan konten sel hanya pada waktu tertentu untuk menghindari penalti performa atau untuk mengaktifkan perubahan ukuran pengguna. Panggil metode pengubahan ukuran berbasis konten dalam penanganan aktivitas. Misalnya, gunakan DataBindingComplete peristiwa untuk menginisialisasi ukuran setelah pengikatan, dan menangani CellValidated atau CellValueChanged peristiwa untuk menyesuaikan ukuran guna mengkompensasi pengeditan pengguna atau perubahan dalam sumber data terikat.
Sesuaikan tinggi baris untuk konten sel multibaris. Pastikan lebar kolom sesuai untuk menampilkan paragraf teks dan menggunakan ukuran baris berbasis konten otomatis atau terprogram untuk menyesuaikan tinggi. Pastikan juga bahwa sel dengan konten multibaris ditampilkan menggunakan WrapMode nilai Truegaya sel .

Biasanya, Anda akan menggunakan mode ukuran kolom otomatis untuk mempertahankan lebar kolom atau mengaturnya ke lebar tertentu sebelum tinggi baris disesuaikan.

Mengubah ukuran dengan Mouse

Secara default, pengguna dapat mengubah ukuran baris, kolom, dan header yang tidak menggunakan mode ukuran otomatis berdasarkan nilai sel. Untuk mencegah pengguna mengubah ukuran dengan mode lain, seperti mode isian kolom, atur satu atau beberapa properti berikut:DataGridView

Anda juga dapat mencegah pengguna mengubah ukuran baris atau kolom individual dengan mengatur properti mereka Resizable . Secara default, Resizable nilai properti didasarkan pada AllowUserToResizeColumns nilai properti untuk kolom dan AllowUserToResizeRows nilai properti untuk baris. Namun, jika Anda secara eksplisit mengatur Resizable ke True atau False, nilai yang ditentukan akan mengambil alih nilai kontrol untuk baris atau kolom tersebut. Atur Resizable ke NotSet untuk memulihkan pewarisan.

Karena NotSet memulihkan pewarisan nilai, Resizable properti tidak akan pernah mengembalikan NotSet nilai kecuali baris atau kolom belum ditambahkan ke DataGridView kontrol. Jika Anda perlu menentukan apakah Resizable nilai properti baris atau kolom diwariskan, periksa propertinya State . State Jika nilai menyertakan ResizableSet bendera, Resizable nilai properti tidak diwariskan.

Ukuran Otomatis

Ada dua jenis ukuran otomatis dalam DataGridView kontrol: mode isian kolom dan ukuran otomatis berbasis konten.

Mode isian kolom menyebabkan kolom yang terlihat dalam kontrol mengisi lebar area tampilan kontrol. Untuk informasi selengkapnya tentang mode ini, lihat Mode Isian Kolom di Formulir Windows Kontrol DataGridView.

Anda juga dapat mengonfigurasi baris, kolom, dan header untuk menyesuaikan ukurannya secara otomatis agar sesuai dengan konten selnya. Dalam hal ini, penyesuaian ukuran terjadi setiap kali konten sel berubah.

Catatan

Jika Anda mempertahankan nilai sel dalam cache data kustom menggunakan mode virtual, ukuran otomatis terjadi saat pengguna mengedit nilai sel tetapi tidak terjadi saat Anda mengubah nilai yang di-cache di luar CellValuePushed penanganan aktivitas. Dalam hal ini, panggil UpdateCellValue metode untuk memaksa kontrol memperbarui tampilan sel dan menerapkan mode ukuran otomatis saat ini.

Jika ukuran otomatis berbasis konten diaktifkan hanya untuk satu dimensi—yaitu, untuk baris tetapi bukan kolom, atau untuk kolom tetapi bukan baris—dan WrapMode juga diaktifkan, penyesuaian ukuran juga terjadi setiap kali dimensi lain berubah. Misalnya, jika baris tetapi tidak kolom dikonfigurasi untuk ukuran otomatis dan WrapMode diaktifkan, pengguna dapat menyeret pembagi kolom untuk mengubah lebar tinggi kolom dan baris akan secara otomatis menyesuaikan sehingga konten sel masih ditampilkan sepenuhnya.

Jika Anda mengonfigurasi baris dan kolom untuk ukuran otomatis berbasis konten dan WrapMode diaktifkan, DataGridView kontrol akan menyesuaikan ukuran setiap kali konten sel berubah dan akan menggunakan rasio tinggi ke lebar sel yang ideal saat menghitung ukuran baru.

Untuk mengonfigurasi mode ukuran untuk header dan baris dan untuk kolom yang tidak mengambil alih nilai kontrol, atur satu atau beberapa properti berikut:DataGridView

Untuk mengambil alih mode ukuran kolom kontrol untuk kolom individual, atur propertinya AutoSizeMode ke nilai selain NotSet. Mode ukuran untuk kolom sebenarnya ditentukan oleh propertinya InheritedAutoSizeMode . Nilai properti ini didasarkan pada nilai properti kolom AutoSizeMode kecuali nilai tersebut adalah NotSet, dalam hal ini nilai kontrol AutoSizeColumnsMode diwariskan.

Gunakan pengubahan ukuran otomatis berbasis konten dengan hati-hati saat bekerja dengan data dalam jumlah besar. Untuk menghindari penalti performa, gunakan mode ukuran otomatis yang menghitung ukuran hanya berdasarkan baris yang ditampilkan daripada menganalisis setiap baris dalam kontrol. Untuk performa maksimum, gunakan ukuran terprogram sebagai gantinya sehingga Anda dapat mengubah ukuran pada waktu tertentu, seperti segera setelah data baru dimuat.

Mode ukuran otomatis berbasis konten tidak memengaruhi baris, kolom, atau header yang telah Anda sembunyikan dengan mengatur properti baris atau kolom Visible atau kontrol RowHeadersVisible atau ColumnHeadersVisible properti ke false. Misalnya, jika kolom disembunyikan setelah berukuran otomatis agar pas dengan nilai sel besar, kolom tersembunyi tidak akan mengubah ukurannya jika baris yang berisi nilai sel besar dihapus. Ukuran otomatis tidak terjadi ketika visibilitas berubah, sehingga mengubah properti kolom Visible kembali ke true tidak akan memaksanya untuk menghitung ulang ukurannya berdasarkan kontennya saat ini.

Pengubahan ukuran berbasis konten terprogram memengaruhi baris, kolom, dan header terlepas dari visibilitasnya.

Mengubah Ukuran Terprogram

Saat ukuran otomatis dinonaktifkan, Anda dapat secara terprogram mengatur lebar atau tinggi baris, kolom, atau header yang tepat melalui properti berikut:

Anda juga dapat mengubah ukuran baris, kolom, dan header secara terprogram agar sesuai dengan kontennya menggunakan metode berikut:

Metode ini akan mengubah ukuran baris, kolom, atau header sekali daripada mengonfigurasinya untuk mengubah ukuran berkelanjutan. Ukuran baru secara otomatis dihitung untuk menampilkan semua konten sel tanpa kliping. Namun, saat Anda mengubah ukuran kolom secara terprogram yang memiliki InheritedAutoSizeMode nilai Fillproperti , namun, lebar berbasis konten terhitung digunakan untuk menyesuaikan nilai properti kolom FillWeight secara proporsional, dan lebar kolom sebenarnya kemudian dihitung sesuai dengan proporsi baru ini sehingga semua kolom mengisi area tampilan kontrol yang tersedia.

Mengubah ukuran terprogram berguna untuk menghindari penalti performa dengan mengubah ukuran berkelanjutan. Ini juga berguna untuk menyediakan ukuran awal untuk baris, kolom, dan header yang dapat diubah ukuran pengguna, dan untuk mode isian kolom.

Anda biasanya akan memanggil metode pengurangan ukuran terprogram pada waktu tertentu. Misalnya, Anda mungkin mengubah ukuran semua kolom secara terprogram segera setelah memuat data, atau Anda mungkin mengubah ukuran baris tertentu secara terprogram setelah nilai sel tertentu dimodifikasi.

Menyesuaikan Perilaku Ukuran Berbasis Konten

Anda dapat menyesuaikan perilaku ukuran saat bekerja dengan tipe sel, baris, dan kolom turunan DataGridViewDataGridViewCell.GetPreferredSizedengan menimpa metode , , DataGridViewRow.GetPreferredHeightatau DataGridViewColumn.GetPreferredWidth atau dengan memanggil kelebihan metode pengurangan ukuran yang dilindungi dalam kontrol turunan DataGridView . Overload metode pengubahan ukuran yang dilindungi dirancang untuk bekerja berpasangan untuk mencapai rasio tinggi-ke-lebar sel yang ideal, menghindari sel yang terlalu lebar atau tinggi. Misalnya, jika Anda memanggil AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) kelebihan beban AutoResizeRows metode dan meneruskan nilai false untuk Boolean parameter, kelebihan beban akan menghitung tinggi dan lebar ideal untuk sel dalam baris, tetapi hanya akan menyesuaikan tinggi baris. Anda kemudian harus memanggil AutoResizeColumns metode untuk menyesuaikan lebar kolom ke ideal yang dihitung.

Opsi Ukuran Berbasis Konten

Enumerasi yang digunakan oleh properti dan metode ukuran memiliki nilai serupa untuk ukuran berbasis konten. Dengan nilai ini, Anda dapat membatasi sel mana yang digunakan untuk menghitung ukuran pilihan. Untuk semua enumerasi ukuran, nilai dengan nama yang merujuk ke sel yang ditampilkan membatasi perhitungannya ke sel dalam baris yang ditampilkan. Mengecualikan baris berguna untuk menghindari penalti performa saat Anda bekerja dengan sejumlah besar baris. Anda juga dapat membatasi perhitungan untuk nilai sel di sel header atau nonheader.

Baca juga