Lanjut dengan
Windows Forms
9.1 Pengantar
Bab ini akan dilanjutkan untuk mempelajari
GUI. Akan dimuali dengan menu, yang menyajikan opsi-opsi terorganisir kepada
pengguna. Di sini akan ditunjukkan bagaimana mengembangkan menu-menu dengan
perangkat-perangkat yang disediakan oleh Visual Studio. Selanjutnya, Anda
didiskusikan bagaimana membaca dan menampilkan tanggal dan waktu menggunakan
kendali MonthCalendar dan DateTimePicker. Komponen GUI, LinkLabel, juga akan diintroduksi untuk
memampukan pengguna dalam mengakses salah satu dari beberapa destinasi, seperti
file atau situs web.
Akan didemonstrasikan pula bagaimana
memanipulasi sebuah daftar nilai melalui suatu ListBox dan bagaimana mengkomboinasikan beberapa kotak periksa di
dalam sebuah CheckedListBox. Akan
diciptakan sebuah daftar drop-down menggunakan ComboBox dan menampilkan data secara hierarkis menggunakan kendali TreeView.
9.2
Menu
Menu menyediakan grup-grup perintah
(opsi) yang berelasi pada aplikasi-aplikasi Windows. Meskipun perintah-perintah
ini bervariasi tergantung dari program, tetapi beberapa di antaranya, seperti Open dan Save, umum dijumpai pada banyak aplikasi. Menu merupakan bagian
integral dari GUI, karena ia mengorganisir perintah-perintah tanpa membuat GUI
“berantakan”.
Gambar 9.1 Menu, submenu, dan item-item menu
Pada Gambar 9.1, ditunjukkan pelbagai
perintah (dikenal pula dengan item-item menu), dengan submenu (menu di dalam
sebuah menu) pada IDE Visual Studio. Menu level-atas tampil di bagian sisi kiri
gambar, sedangkan submenu ditampilkan di sisi kanan. Menu yang memuat sebuah
item menu disebut dengan menu induk dari item menu itu. Item menu yang memuat
sebuah submenu dipandang sebagai induk dari submenu tersebut.
Menu dapat memiliki kunci pintas (shortcut) Alt, yang diakses dengan
menekan Alt dan huruf tergaris-bawah. Sebagai contoh, Alt F umumnya untuk
mengekspansi menu File. Item-item
menu juga dapat memiliki kunci pintas (kombinasi-kombinasi dari Ctrl, Shift,
Alt, F1, F2, kunci-kunci huruf, dan seterusnya). Beberapa item menu menampilkan tanda periksa
(tanda centang), yang biasanya menandakan bahwa lebih dari satu opsi pada menu
tersebut dapat diseleksi sekaligus.
Gambar 9.2 Mengedit menu pada Visual Studio
Untuk menciptakan sebuah menu, Anda
membukan Toolbox dan menggeret
sebuah kendali MenuStrip ke Form. Ini akan menciptakan sebuah
batang menu di atas Form (di bawah
judul batang) dan menempatkan sebuah ikon MenuStrip
pada component tray. Untuk memilih MenuStrip, Anda mengklik ikon ini. Anda
sekarang dapat menggunakan mode Design
untuk menciptakan dan mengedit menu-menu untuk aplikasi Anda. Menu, seperti kendali lainnya, memiliki
properti dan event, yang dapat
diakses melalui jendela Properties.
Untuk menambahkan item-item pada menu,
Anda mengklik Text Box Type Here
(Gambar 9.2) dan mengetikkan nama item menu. Tindakan ini akan menambahkan
sebuah entri pada menu dengan tipe ToolStripMenuItem.
Setelah Anda menekan kunci Enter, nama item menu akan ditambahkan
pada menu. Kemudian TextBox Type Here
lain muncul, agar Anda bisa menambahkan item-item di bawah atau di samping item
menu awal (Gambar 9.3).
Gambar 9.3 Menambahkan ToolStripMenuItem pada MenuStrip
Untuk menciptakan sebuah akses pintas,
Anda mengetikkan tanda & di
depan karakter yang akan digaris-bawahi. Sebagai contoh, item menu File dengan huruf F digaris-bawahi,
ketikkan &File. Untuk
menampilkan sebuah ampersand, Anda mengetikkan &&. Untuk menambahkan kunci pintas lain (misalnya, <Ctrl> F9) untuk item-item menu,
Anda menetapkan properti ShortcutKeys
dari ToolStripMenu tertentu. Untuk
melakukannya, Anda memilih panah bawah di sebelah kanan properti ini pada
jendela Properties. Pada jendela
yang muncul (Gambar 9.4), Anda menggunakan CheckBox
dan daftar drop-down untuk memilih kunci pintas. Ketika selesai, Anda mengklik di
suatu tempat pada layar. Anda dapat menyembunyikan kunci pintas dengan mengatur
properti ShowShortcutKeys menjadi false, dan Anda dapat memodifikasi
bagaimana kunci pintas ditampilkan pada item menu dengan memodifikasi properti ShortcutKeyDisplayString.
Gambar 9.4 Memilih kunci pintas untuk item menu
Anda dapat menghapus sebuah item menu
dengan memilihnya menggunakan mouse dan menekan kunci Delete. Item menu dapat dikelompokkan dengan batang pemisah (separator bar), yang disisipkan dengan
klik kanan pada menu dan memilih Insert
> Separator atau dengan mengetikkan “-“ pada teks dari sebuah item menu.
Selain teks, Visual Studio juga
memampukan Anda untuk dengan mudah menambahkan TextBox dan ComboBox
(daftar drop-down) sebagai item menu.
Ketika menambahkan sebuah item pada mode Design,
Anda dapat menyadari bahwa sebelum Anda memasukkan teks untuk item baru, pada
Anda disediakan sebuah daftar drop-down. Anda bisa mengklik panah bawah
(Gambar 9.5) yang memampukan Anda untuk memilih tipe item yang akan
ditambahkan, yaitu MenuItem (dengan
tipe ToolStripMenuItem, default), ComboBox (dengan tipe ToolStripComboBox), dan TextBox (dengan tipe ToolStripTextBox). Untuk sementara ini,
Anda hanya fokus pada ToolStripMenuItem
saja.
ToolStripMenuItem memicu sebuah event Click ketika diseleksi. Untuk menciptakan
sebuah event handler Click kosong, Anda mengklik ganda
sebuah item menu pada mode Design.
Beberapa aksi dalam merespon event
ini mencakup menampilkan dialog dan menetapkan properti-properti. Beberapa
properti item dan sebuah event
dicantumkan pada Gambar 9.6.
Gambar 9.5 Opsi-opsi item menu
Properti dan event pada kelas MenuStrip dan MenuStripMenuItem
|
Penjelasan
|
Properti
MenuStrip
|
|
RightToLeft
|
Menyebabkan
teks ditampilkan dari kanan ke kiri. Ini berguna untuk bahasa-bahasa yang
dibaca dari kanan ke kiri.
|
Properti-properti
MenuStripMenuItem
|
|
Checked
|
Mengindikasikan apakah sebuah item
menu dicentang. Nilai defaultnya adalah false,
yang berarti bahwa item menu tidak dicentang.
|
CheckOnClick
|
Mengindikasikan bahwa sebuah item
menu harus muncul dicentang atau tidak dicentang ketika ia diseleksi.
|
ShortcutKey-
DisplayString
|
Menetapkan teks yang akan ditampilkan
di samping sebuah item menu untuk kunci pintas. Jika kosong, nama kunci
ditampilkan. Sebaliknya, teks pada properti ini ditampilkan untuk kunci
pintas.
|
ShortcutKeys
|
Menetapkan kunci pintas untuk item
menu (misalnya, <Ctrl> F9 ekivalen dengan pengklikan terhadap item
tertentu).
|
ShowShortcutKeys
|
Mengindikasikan apakah sebuah kunci
pintas ditampilkan di samping teks item menu. Defaultnya adalah true, yang menampilkan kunci pintas.
|
Text
|
Menetapkan teks pada item menu. Untuk
menciptakan kunci pintas Alt, sebuah karakter & ditempatkan di depan teks
tersebut. Sebagai contoh, &File
untuk menetapkan sebuah menu bernama File
dengan karakter F digaris-bawahi.
|
Event pada ToolStripMenuItem
|
|
Click
|
Dipicu
ketika sebuah item diklik atau sebuah kunci pintas digunakan. Ini merupakan event default ketika menu diklik ganda
pada mode Design.
|
Gambar
9.6 Beberapa properti dan sebuah event dari kelas MenuStrip dan MenuStripMenuItem
Kelas UjiMenuFom (Gambar 9.7) menciptakan sebuah menu sederhana pada Form. Form memiliki menu level-atas File
dengan item-item menu Tentang (yang
menampilkan sebuah MessageBox) dan Keluar (yang menghentikan program).
Program juga memuat sebuah menu Format,
yang memuat item-item menu untuk mengubah teks pada sebuah Label. Menu Format
memiliki submenu Warna dan Font, yang mengubah warna dan jenis
huruf dari teks pada sebuah Label.
Menciptakan GUI
Untuk menciptakan GUI ini, Anda
memulainya dengan menggeret MenuStrip
dari Toolbox ke Form. Kemudian Anda menggunakan mode Design untuk menciptakan struktur menu seperti yang ditampilkan
pada keluaran program. Menu File (fileToolStripMenuItem) memiliki
item-item menu Tentang (tentangToolStripMenuItem) dan Keluar (keluarToolStripMenuItem.
Menu Format (formatToolStripMenuItem)
memiliki dua submenu. Submenu pertama, Warna
(warnaToolStripMenuItem), memuat
item-item menu Hitam (hitamToolStripMenuItem), Biru (biruToolStripMenuItem), Merah
(merahToolStripMenuItem), dan Hijau (hijauToolStripMenuItem). Submenu kedua, Huruf (hurufToolStripMenuItem),
memuat Times New Roman (timesToolStripMenuItem), Courier (courierToolStripMenuItem), Comic
Sans (comicToolStripMenuItem), sebuah batang pemisah (dashToolStripMenuItem), Tebal (tebalToolStripMenuItem), dan Miring
(miringToolStripMenuItem).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
// Gambar 9.7: UjiMenuForm.cs
// Menggunakan beberapa menu untuk
mengubah warna dan gaya huruf.
using System;
using System.Drawing;
using
System.Windows.Forms;
namespace UjiMenu
{
// Form ini memuat sebuah Menu yang mengubah warna dan gaya
// huruf dari teks yang ditampilkan pada Label
public partial class
UjiMenuForm : Form
{
// konstruktor default
public UjiMenuForm()
{
InitializeComponent();
} // akhir konstruktor default
// menampilkan MessageBox ketika ToolStripMenuItem Tentang dipilih
private void tentangToolStripMenuItem_Click(
object sender, EventArgs e)
{
MessageBox.Show( "Ini adalah sebuah contoh\ndari penggunaan menu.", "Tentang",
MessageBoxButtons.OK,
MessageBoxIcon.Information );
} // akhir metode tentangToolStripMenuItem_Click
// keluar program ketika
ToolStripMenuItem Keluar dipilih
private void keluarToolStripMenuItem_Click(
object sender, EventArgs e)
{
Application.Exit();
} // akhir metode keluarToolStripMenuItem_Click
// mereset semua centang untuk ToolStripMenuItem Warna
private void HapusWarna()
{
// menghapus semua tanda periksa
hitamToolStripMenuItem.Checked
= false;
biruToolStripMenuItem.Checked
= false;
merahToolStripMenuItem.Checked
= false;
hijauToolStripMenuItem.Checked
= false;
} // akhir metode HapusWarna
// memperbarui keadaan Menu dan warna teks hitam
private void hitamToolStripMenuItem_Click(
object sender, EventArgs e)
{
// menghapus semua tanda periksa
untuk ToolStripMenuItem Warna
HapusWarna();
// menetapkan warna menjadi Black
tampilLabel.ForeColor = Color.Black;
hitamToolStripMenuItem.Checked
= true;
} // akhir metode hitamToolStripMenuItem_Click
// memperbarui keadaan Menu dan warna teks biru
private void biruToolStripMenuItem_Click(
object sender, EventArgs e)
{
// menghapus semua tanda
periksa untuk ToolStripMenuItem Warna
HapusWarna();
// menetapkan warna menjadi Blue
tampilLabel.ForeColor = Color.Blue;
biruToolStripMenuItem.Checked
= true;
} // akhir metode biruToolStripMenuItem_Click
// memperbarui keadaan Menu dan warna teks merah
private void merahToolStripMenuItem_Click(
object sender, EventArgs e)
{
// menghapus semua tanda periksa
untuk ToolStripMenuItem Warna
HapusWarna();
// menetapkan warna menjadi Red
tampilLabel.ForeColor = Color.Red;
merahToolStripMenuItem.Checked
= true;
} // akhir metode merahToolStripMenuItem_Click
// memperbarui keadaan Menu dan warna teks hijau
private void hijauToolStripMenuItem_Click(
object sender, EventArgs e)
{
// menghapus semua tanda periksa
untuk ToolStripMenuItem Warna
HapusWarna();
// menetapkan warna menjadi Green
tampilLabel.ForeColor = Color.Green;
hijauToolStripMenuItem.Checked
= true;
} // akhir metode hijauToolStripMenuItem_Click
// mereset tanda periksa untuk ToolStripMenuItem Font
private void HapusFont()
{
// menghapus semua tanda periksa
timesToolStripMenuItem.Checked
= false;
courierToolStripMenuItem.Checked
= false;
comicToolStripMenuItem.Checked
= false;
} // akhir metode HapusFont
// memperbarui keadaan Menu dan menetapkan Font menjadi Times New
Roman
private void timesToolStripMenuItem_Click(
object sender, EventArgs e)
{
// menghapus semua tanda periksa
untuk ToolStripMenuItem Font
HapusFont();
// menetapkan huruf Times New
Roman
timesToolStripMenuItem.Checked
= true;
tampilLabel.Font = new Font( "Times New Roman", 14,
tampilLabel.Font.Style);
} // akhir metode timesToolStripMenuItem_Click
// memperbarui keadaan Menu dan menetapkan Font menjadi Courier
private void courierToolStripMenuItem_Click(
object sender, EventArgs e)
{
// menghapus semua tanda periksa
untuk ToolStripMenuItem Font
HapusFont();
// menetapkan huruf Times New
Roman
courierToolStripMenuItem.Checked
= true;
tampilLabel.Font = new Font("Courier", 14,
tampilLabel.Font.Style);
} // akhir metode courierToolStripMenuItem_Click
// memperbarui keadaan Menu dan menetapkan Font menjadi Comic Sans
private void comicToolStripMenuItem_Click(
object sender, EventArgs e)
{
// menghapus semua tanda periksa
untuk ToolStripMenuItem Font
HapusFont();
// menetapkan huruf Times New
Roman
comicToolStripMenuItem.Checked
= true;
tampilLabel.Font = new Font("Comic Sans MS", 14,
tampilLabel.Font.Style);
} // akhir metode comicToolStripMenuItem_Click
// mentoggle tanda periksa dan mentoggle gaya tebal
private void tebalToolStripMenuItem_Click(
object sender, EventArgs e)
{
// mentoggle tanda periksa
tebalToolStripMenuItem.Checked
= !tebalToolStripMenuItem.Checked;
// menggunakan Xor untuk
mentoggle tebal
tampilLabel.Font = new Font( tampilLabel.Font,
tampilLabel.Font.Style ^ FontStyle.Bold );
} // akhir metode tebalToolStripMenuItem_Click
// mentoggle tanda periksa dan mentoggle gaya miring
private void miringToolStripMenuItem_Click(
object sender, EventArgs e)
{
// mentoggle tanda periksa
miringToolStripMenuItem.Checked =
!miringToolStripMenuItem.Checked;
// menggunakan Xor untuk
mentoggle miring
tampilLabel.Font = new Font(tampilLabel.Font,
tampilLabel.Font.Style ^ FontStyle.Italic);
} // akhir metode miringToolStripMenuItem_Click
} // akhir kelas UjiMenuForm
} // akhir namespace UjiMenu
|
Menangani Event Click untuk Item Menu Tentang dan Keluar
Item menu Tentang pada menu File
menampilkan sebuah MessageBox ketika
diklik (baris 20-25). Item menu Keluar
menutup aplikasi melalui metode static,
Exit, dari kelas Application (baris 31). Metode-metode static dari kelas Application mengendalikan eksekusi program. Metode Exit menyebabkan aplikasi berhenti.
Event Submenu Warna
Anda menciptakan beberapa item pada
submenu Warn (Hitam, Biru, Merah, dan Hijau), diman pengguna hanya dapat memilih satu submenu pada suatu
waktu. Untuk mengindikasikan bahwa sebuah item menu diseleksi, Anda menetapkan
properti Checked pada tiap item menu
Warna menjadi true. Ini menyebabkan sebuah centang muncul di sisi kiri sebuah
item menu.
Setiap item menu Warna masing-masing memiliki event
handler Click. Event handler untuk warna Hitam adalah hitamToolStripMenuItem_Click (baris 45-54). Sama halnya, event handler untuk warna Biru, Merah, dan Hijau adalah biruToolStripMenuItem_Click (baris
57-66), merahToolStripMenuItem_Click
(baris 69-78), dan hijauToolStripMenuItem_Click
(baris 81-90). Setiap item menu Warna
juga hanya dapat dipilih satu pada suatu waktu, jadi setiap event handler memanggil metode HapusWarna (baris 35-42) sebelum
menetapkan properti Checked menjadi true. Metode HapusWarna menetapkan properti Checked
dari tiap warna ToolStripMenuItem
menjadi false, yang secara efektif
mencegah lebih dari satu item menu diseleksi pada suatu waktu. Pada mode Design, Anda awalnya menetapkan
properti Checked dari item menu Hitam menjadi true, karena pada awal program, teks pada Form adalah hitam.
Event Submenu Font
Menu Font memuat tiga item menu untuk jenis huruf Courier, Times New Roman,
dan Comic Sans. Menu ini juga memuat dua item menu untuk gaya huruf, Hitam dan Miring. Anda menambahkan sebuah batang pemisah di antara item menu
jenis huruf dan item menu gaya huruf.
Event handler untuk item-item menu Font
Times New Roman, Courier, dan Comic Sans adalah timesToolStripMenuItem_Click
(baris 102-112), courierToolStripMenuItem_Click
(baris 115-125), dan comicToolStripMenuItem_Click
(baris 128-138). Setiap event handler
ini berperilaku sama seperti setiap event
handler untuk item-item menu Warna.
Setiap event handler menghapus
properti Checked untuk semua item
menu font dengan memanggil metode HapusFont
(baris 93-99), kemudian menetapkan propertu Checked dari item menu yang memicu event tersebut menjadi true.
9.3
Kendali MonthCalendar
Banyak aplikasi perlu melakukan
perhitungan tanggal dan waktu. .NET Framework
menyediakan dua kendali yang memampukan sebuah aplikasi untuk mendapatkan
informasi tanggal dan waktu, yaitu kendali MontCalendar
dan DateTimePicker.
Kendali MonthCalendar (Gambar 9.8) menampilkan kalender bulanan pada Form. Pengguna dapat memilih sebuah
tanggal dari bulan yang sedang ditampilkan. Ketika sebuah tanggal dipilih, ia
akan disoroti. Banyak tanggal dapat diseleksi dengan mengklik tanggal-tanggal
pada kalender sambil menahan kunci Shift. Event
default untuk kendali ini adalah event
DateChanged, yang dipicu ketika
sebuah tanggal baru diseleksi. Properti-properti disediakan agar Anda dapat
memodifikasi penampilan kalender, berapa banyak tanggal yang dapat diseleksi sekaligus,
dan tanggal maksimum dan tanggal minimum yang bisa diseleksi. Properti-properti
MonthCalendar dan sebuah eventnya dicantumkan pada Gambar 9.9.
Gambar 9.8 Kontrol MonthCalendar
Properti dan event pada kelas MonthCalendar
|
Penjelasan
|
Properti-properti
MonthCalendar
|
|
FirstDayOfWeek
|
Menetapkah hari dalam minggu yang
pertama ditampilkan untuk tiap minggunya pada kalender.
|
MaxDate
|
Tanggal terakhir yang dapat
diseleksi.
|
MaxSelectionCount
|
Jumlah maksimum dari tanggal yang
dapat diseleksi sekaligus.
|
MinDate
|
Tanggal pertama yang dapat diseleksi.
|
MonthlyBoldedDates
|
Sebuah array yang memuat
tanggal-tanggal yang akan ditampilkan pada kalender.
|
SelectionEnd
|
Tanggal terakhir yang dipilih oleh
pengguna.
|
SelectionRange
|
Tanggal-tanggal yang dipilih oleh
pengguna.
|
SelectionStart
|
Tanggal pertama yang dipilih oleh
pengguna.
|
Event pada MonthCalendar
|
|
DateChanged
|
Dipicu
ketika sebuah tanggal dipilih pada kelender.
|
Gambar
9.9 Beberapa properti dan sebuah event dari kelas MonthCalendar
9.4
Kendali DateTimePicker
Kendali DateTimePicker sama dengan kendali MonthCalendar kecuali bahwa ia menampilkan kalender ketika panah
bawah diseleksi. Kendali DateTimePicker
dapat dipakai untuk membaca informasi tanggal dan waktu dari pengguna. Properti
Value dari DateTimePicker menyimpan sebuah objek DateTime, yang selalu memuat informasi tanggal dan waktu. Anda
dapat membaca informasi tanggal dari objek DateTime
menggunakan properti Date, dan Anda
dapat membaca informasi waktu dengan menggunakan properti TimeOfDay.
Kendali DateTimePicker juga lebih kompleks daripada kendali MonthCalendar, dimana terdapat beberapa
properti untuk mengedit penampilan kalender. Properti Format menetapkan opsi-opsi seleksi menggunakan enumerasi DateTimePickerFormat. Nilai-nilai pada
enumerasi ini adalah Long
(menampilkan tanggal dalam format panjang, seperti Saturday, January 11, 2014),
Short (menampilkan tanggal dalam
format pendek, seperti 1/11/2014), Time
(menampilkan nilai waktu, seperti 5:31:03 PM), dan Custom (mengindikasikan bahwa format kustom akan digunakan). Jika
format Custom digunakan, maka
tampilan pada DateTimePicker
ditetapkan menggunakan properti CustomFormat.
Event default untuk kendali ini
adalah ValueChanged, yang terjadi
ketika nilai yang diseleksi (apakah tanggal atau waku) berubah.
Properti-properti DateTimePicker dan
sebuah eventnya dicantumkan pada
Gambar 9.10.
Properti dan event pada kelas DateTimePicker
|
Penjelasan
|
Properti-properti
DateTimePicker
|
|
CalendarForeColor
|
Menetapkan warna teks pada kalender.
|
CalendarMonth-
Background
|
Menetapkan warna latar belakang dari
kalender.
|
CustomFormat
|
Menetapkan format string kustom untuk
opsi pengguna.
|
Format
|
Menetapkan format dari tanggal dan/
atau waktu yang digunakan untuk opsi pengguna.
|
MaxDate
|
Tanggal
dan waktu maksimum yang dapat diseleksi.
|
MinDate
|
Tanggal
dan waktu minimum yang dapat diseleksi.
|
ShowCheckBox
|
Mengindikasikan jika sebuah CheckBox
harus ditampilkan di sisi kiri dari tanggal dan waktu terseleksi.
|
ShowUpDown
|
Mengindikasikan apakah kendali
menampilkan Button panah atas dan
bawah. Berguna ketika DateTimePicker
dipakai untuk menyeleksi sebuah waktu. Kedua Button itu dapat dipakai untuk menambah atau mengurangi jam,
menit, dan detika.
|
Value
|
Data yang diseleksi oleh pengguna.
|
Event pada DateTimePicker
|
|
ValueChanged
|
Dipicu
ketika properti Value berubah, termasuk ketika pengguna memilih tanggal atau
waktu baru.
|
Gambar 9.10 Beberapa properti dan sebuah event
dari kelas DateTimePicker
Gambar 9.11 mendemonstrasikan
penggunaan sebuah objek DateTimePicker
untuk memilih sebuah waktu. Banyak perusahaan menggunakan fungsionalitas
semacam ini.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// Gambar 9.11:
DateTimePickerLoadForm.cs
// Menggunakan sebuah DateTimePicker
untuk menyeleksi waktu.
using System;
using
System.Windows.Forms;
namespace UjiDateTimePicker
{
// Form memampukan pengguna memilih tanggal menggunakan DateTimePicker
// dan menampilkan estimasi tanggal pengiriman
public partial class
DateTimePickerForm : Form
{
// konstruktor default
public DateTimePickerForm()
{
InitializeComponent();
} // akhir konstruktor default
private void dateTimePicker_ValueChanged(
object sender, EventArgs e)
{
DateTime tglPengiriman =
dateTimePicker.Value;
// menambawa waktu ekstra ketika
menjumpai weekend
if ( tglPengiriman.DayOfWeek == DayOfWeek.Friday ||
tglPengiriman.DayOfWeek == DayOfWeek.Saturday
||
tglPengiriman.DayOfWeek == DayOfWeek.Sunday
)
//estimasi tiga hari untuk
pengiriman
tampilLabel.Text =
tglPengiriman.AddDays( 3
).ToLongDateString();
else
// sebaliknya, estimasi dua hari
tampilLabel.Text =
tglPengiriman.AddDays( 2
).ToLongDateString();
} // akhir metode dateTimePicker_ValueChanged
private void DateTimePickerForm_Load(object sender, EventArgs e)
{
// pengguna tidak dapat memilih
hari-hari sebelum hari ini
dateTimePicker.MinDate =
DateTime.Today;
// pengguna hanya dapat memilih
tanggal pada tahun ini
dateTimePicker.MaxDate =
DateTime.Today.AddYears(1);
} // akhir metode DateTimePickerForm_Load
} // akhir kelas DateTimePickerForm
} // akhir namespace UjiDateTimePicker
|
Objek DateTimePicker (dateTimePicker)
memiliki properti Format yang
ditetapkan menjadi Long, jadi
pengguna dapat menyeleksi sebuah tanggal dan tidak waktu pada aplikasi ini.
Ketika pengguna menyeleksi sebuah tanggal, event
ValueChanged akan terjadi. Event handler untuk event ini (baris 18-35) pertama-tama membaca tanggal yang diseleksi
dari properti Value pada kendali DateTimePicker (baris 21). Baris 24-26
menggunakan properti DayOfWeek dari
struktur DateTime untuk menentukan
hari dalam minggu (dimana tanggal yang dipilih jatuh pada hari itu).
Nilai-nilai hari direpresentasikan menggunakan enumerasi DayOfWeek. Baris 29-30 dan 33-34 menggunakan metode AddDays untuk menambah tanggal sebesar
tiga hari atau dua hari. Tanggal yang dihasilkan kemudian ditampilkan dalam
format Long menggunakan metode ToLongDateString.
Pada aplikasi ini, Anda tidak ingin
pengguna untuk memilih hari pengiriman sebelum hari ini, atau satu hari setelah
satu tahun ke depan. Untuk melakukannya, Anda menetapkan properti MaxDate dan MinDate dari DateTimePicker
ketika Form dimuat (baris 40 dan
43). Properti Today menghasilkan
hari ini, dan metode AddYears
(dengan sebuah argumen 1) dipakai untuk menetapkan sebuah tanggal satu tahun ke
depan.
9.5
Kendali LinkLabel
Kendali LinkLabel menampilkan link
ke sumberdaya lain, seperti file atau halaman web (Gambar 9.12). Sebuah LinkLabel muncul sebagai teks yang
digaris-bawahi (diwarnai biru secara default). Ketika mouse berada di atas link itu, pointer akan berubah menjadi
sebuah tangan; ini sama dengan watak dari hyperlink
pada halaman web. Link dapat mengubah warna untuk mengindikasikan bahwa ia
belum pernah dikunjungi, atau baru saja dikunjungi, atau aktif. Ketika diklik, LinkLabel memicu event LinkClicked
(Gambar 9.13). Kelas LinkLabel
diderivasi dari kelas Label dan oleh
karena itu mewarisi semua fungsionalitas pada kelas Label.
Gambar 9.12 Kendali LinkLabel pada suatu program
Properti dan event pada kelas LinkLabel
|
Penjelasan
|
Properti-properti
DateTimePicker
|
|
ActiveLinkColor
|
Menetapkan warna dari link aktif
ketika pengguna dalam proses pengklikan. Warna default (umumnya merah)
ditetapkan oleh sistem.
|
LinkArea
|
Menetapkan porsi teks mana pada LinkLabel yang menjadi bagian dari
link.
|
LinkBehavior
|
Menetapkan watak link, seperti
bagaimana link tampak ketika mouse berada di atasnya.
|
LinkColor
|
Menetapkan warna asli dari link
sebelum ia dikunjungi. Warna default (umumnya biru) ditetapkan oleh sistem.
|
LinkVisited
|
Jika true, link akan tampak seperti telah dikunjungi (warnanya berubah
menjadi nilai yang ditetapkan oleh properti VisitedLinkColor). Nilai defaultnya adalah false.
|
Text
|
Menetapkan teks pada kendali.
|
UseMnemonic
|
Jika true, karakter & pada properti Text berperan sebagai kunci pintas (sama dengan kunci pintas Alt
pada menu).
|
VisitedLinkColor
|
Menetapkan warna dari sebuah link
yang telah dikunjungi. Warna default (umumnya ungu) ditetapkan oleh sistem
operasi.
|
Event pada LinkLabel dengan argumen LinkLabelLinkClickedEventArgs
|
|
LinkClicked
|
Dipicu
ketika link diklik. Ini merupakan event
default ketika kendali diklik dua kali pada mode Design.
|
Gambar
9.13 Beberapa properti dan sebuah event dari kelas LinkLabel
Kelas UjiLinkLabelForm (Gambar 9.14) menggunakan tiga LinkLabel untuk menghubungkan ke drive
C:, suatu situs web, dan aplikasi Notepad. Properti-properti cDriveLinkLabel, biobsesLinkLabel, dan notepadLinkLabel
dari kelas LinkLabel menjelaskan
tujuan tiap link.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
//
Gambar 9.14: UjiLinkLabelForm.cs
//
Menggunakan LinkLabel untuk menciptakan hyperlink.
using
System;
using
System.Windows.Forms;
namespace
UjiLinkLabel
{
// Form menggunakan beberapa LinkLabel
untuk menjelajah drive C:\,
// halaman web, dan menjalankan Notepad
public
partial class UjiLinkLabelForm : Form
{
// konstruktor default
public
UjiLinkLabelForm()
{
InitializeComponent();
} // akhir konstruktor default
// menjelajah drive C:\
private
void cDriveLinkLabel_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
// mengubah LinkColor setelah
diklik
cDriveLinkLabel.LinkVisited
= true;
System.Diagnostics.Process.Start(@"C:\");
} // akhir metode
cDriveLinkLabel_LinkClicked
// mengunjungi www.biobses.com
private
void biobsesLinkLabel_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
// mengubah LinkColor setelah
diklik
biobsesLinkLabel.LinkVisited
= true;
System.Diagnostics.Process.Start("http://www.biobses.com");
} // akhir metode
biobsesLinkLabel_LinkClicked
// menjalankan Notepad
private
void notepadLinkLabel_LinkClicked(object sender,
LinkLabelLinkClickedEventArgs e)
{
// mengubah LinkColor setelah
diklik
notepadLinkLabel.LinkVisited
= true;
// program dipanggil seperti
menjalankan
// menu dan path penuh tidak
dibutuhkan
System.Diagnostics.Process.Start("notepad");
} // akhir metode
notepadLinkLabel_LinkClicked
} // akhir kelas UjiLinkLabelForm
} //
akhir namespace UjiLinkLabel
|
Event handler untuk LinkLabel memanggil metode Start dari kelas Process (namespace System.Diagnostics),
yang memampukan Anda untuk mengeksekusi program-program lain, atau mengunjungi
situs web dari suatu aplikasi. Metode Start
dapat memiliki satu argumen, yaitu file yang akan dibuka, atau dua argumen,
yaitu aplikasi yang akan dijalankan dan argumen command-line.
Event handler untuk event LinkClicked pada cDriveLinkLabel menjelajah drive C:\
(baris 19-26). Baris 23 menetapkan properti LinkVisited menjari true,
yang mengubah warna link dari biru
menjadi ungu (warna-warna LinkVisited
dapat dikonfigurasi melalui jendela Properties). Event handler ini
kemudian melewatkan @”C:\” kepada
metode Start (baris 25), yang
membuka jendela Windows Explorer.
Event handler untuk event LinkClicked pada biobsesLinkLabel (baris 29-36) membuka
halaman web www.biobses.com pada penjelajah web. Anda melakukan ini dengan
melewatkan alamat halaman-web sebagai sebuah string (baris 35), yang membuka halaman web pada jendela
penjelajah. Baris 33 menetapkan properti LinkVisited
menjadi true.
Event handler untuk event LinkClicked pada notepadLinkLabel (baris 39-48) membuka
aplikasi Notepad. Baris 43 menetapkan properti LinkVisited menjadi true
sehingga link tampak sebagai link yang telah dikunjungi. Baris 47 melewatkan
argumen “notepad” kepada metode Start, yang menjalankan notepad.exe.
9.6
Kendali ListBox
Kendali ListBox memampukan pengguna untuk melihat dan menyeleksi dari
pelbagai item pada sebuah daftar. ListBox
merupakan entitas GUI statis, yang berarti bahwa pengguna tidak dapat secara
langsung mengedit daftar item. Pengguna diberikan TextBox dan Button untuk
menetapkan item-item yang akan ditambahkan ke dalam daftar, tetapi penambahan
aktual harus dilakukan pada kode. Kendali CheckedListBox
(pada bagian selanjutnya) mewarisi sebuah ListBox
dengan mencantumkan CheckBox di
samping tiap item pada daftar. Ini memampukan pengguna untuk menempatkan tanda
centang pada beberapa item sekaligus, sama seperti kendali CheckBox. (Pengguna juga dapat memilih beberapa item dari sebuah ListBox dengan menetapkan properti SelectionMode pada ListBox). Gambar 9.15 menampilkan sebuah ListBox dan CheckedListBox.
Pada kedua kendali, batang penggeser muncul jika jumlah item melebihi area ListBox.
Gambar 9.15 ListBox dan CheckedListBox pada sebuah Form
Gambar 9.16 mencantumkan beberapa
properti dan metode ListBox.
Properti SelectionMode menentukan
jumlah item yang dapat diseleksi. Properti ini memiliki nilai-nilai None, One, MultiSimple, dan MulitExtender). Event SelectedIndexChanged
terjadi ketika pengguna menyeleksi sebuah item baru.
Properti, metode dan event
pada kelas ListBox
|
Penjelasan
|
Properti-properti
ListBox
|
|
Items
|
Koleksi yang memuat item-item di
dalam ListBox.
|
MultiColumn
|
Mengindikasikan apakah ListBox dapat menampilkan kolom
jamak. Kolom jamak mengeliminasi batang penggeser vertikal dari tampilan.
|
SelectedIndex
|
Menghasilkan indeks dari item
terseleksi. Jika tidak ada item yang diseleksi, properti ini menghasilkan -1.
Jika pengguna menyeleksi beberapa item, properti ini menghasilkan salah satu
dari indeks yang terseleksi. Jika beberapa item diseleksi, Anda menggunakan
properti SelectedIndices.
|
SelectedIndices
|
Menghasilkan sebuah koleksi yang
memuat indeks-indeks dari semua item yang terseleksi.
|
SelectedItem
|
Menghasilkan sebuah referensi yang
menunjuk ke item terseleksi. Jika beberapa item diseleksi, ia menghasilkan
item dengan nomor indeks terendah.
|
SelectedItems
|
Menghasilkan sebuah koleksi yang
memuat item-item terseleksi.
|
SelectionMode
|
Menentukan jumlah item yang dapat
diseleksi dan cara-cara bagaimana item jamak dapat diseleksi. Nilai None, One (default), MultiSimple
(seleksi jamak diijinkan), MultiExtended
(seleksi jamak diijinkan menggunakan kombinasi dari kunci atau klik mouse dan
kunci Shift dan Ctrl).
|
Sorted
|
Mengindikasikan apakah item-item
diurutkan secara alfabetikal. Pengaturan nilai properti ini menjadi true akan mengurutkan item-item.
Nilai defaultnya adalaha false.
|
Metode pada ListBox
|
|
ClearSelected
|
Mendeseleksi setiap item.
|
GetSelected
|
Menghasilkan true jika item pada indeks tertentu diseleksi.
|
Event pada ListBox
|
|
SelectedIndexChanged
|
Dipicu
ketika indeks terseleksi berubah. Ini merupakan event default ketika kendali ini diklik dua kali pada designer.
|
Gambar 9.16 Beberapa properti, metode, dan sebuah event
dari kelas ListBox
Kedua ListBox dan CheckedListBox
memiliki properti Items, SelectedItem, dan SelectedIndex. Properti Items
menghasilkan sebuah koleksi yang memuat item-item. Koleksi merupakan sebuah
cara umum dalam mengelola daftar object pada .NET Framework. Banyak komponen GUI .NET (misalnya, ListBox) menggunakan koleksi untuk memuat objek-objek internal.
Koleksi yang dihasilkan oleh properti Items
direpresentasikan sebagai sebuah objek bertipe ListBox.ObjectCollection. Properti SelectedItem menghasilkan item terseleksi pada ListBox. Jika pengguna ingin menyeleksi beberapa item sekaligus,
digunakan koleksi SelectedItems untuk
menghasilkan semua item terseleksi sebagai sebuah ListBox.Selected-ObjectCollection. Properti SelectedIndex menghasilkan indeks dari item terseleksi. Jika
terdapat lebih dari satu item terseleksi, Anda menggunakan properti SelectedIndices, yang menghasilkan
sebuah ListBox.SelectedCollection.
Jika tidak ada item yang diseleksi, properti SelectedIndex akan menghasilkan -1. Metode GetSelected mengambil sebuah indeks sebagai argumen dan
menghasilkan true jika item terkait
terseleksi.
Menambahkan Item-Item pada ListBox dan CheckedListBox
Untuk menambahkan item-item pada sebuah
ListBox atau pada sebuah CheckedListBox, Anda perlu menambahkan
objek-objek tersebut pada koleksi Items.
Ini dapat dilakukan dengan memanggil metode Add untuk menambahkan sebuah string pada koleksi Items dari ListBox atau CheckedListBox.
Sebagai contoh, Anda dapat menuliskan
satuListBox.Items.Add( satuListItem
);
untuk menambahkan string satuListItem pada
ListBox satuListBox. Untuk menambahkan beberapa objek, Anda dapat memanggil
metode Add beberapa kali atau
memanggil metode AddRange untuk
menambahkan sebuah array objek. Kelas ListBox
dan CheckedListBox masing-masing
memanggil metode metode ToString
untuk menentukan Label bagi entri
dari objek terkait pada daftar. Ini akan memampukan Anda untuk menambahkan
pelbagai objek pada sebuah ListBox
atau CheckedListBox, yang nantinya
dapat diakses lewat properti SelectedItem dan SelectedItem.
Secara alternatif, Anda dapat
menambahkan beberapa item pada ListBox
dan CheckedListBox secara visual
dengan memeriksa properti Items pada
jendela Properties. Dengan mengklik
tombol ellipsis akan membuka String
Collections Editor, yang memuat sebuah area teks untuk menambahkan
item-item; setiap item berada pada baris terpisah (Gambar 9.17). Visual Studio
kemudian akan menuliskan kode untuk menambahkan string-string ini pada koleksi Items di dalam metode InitializeComponent.
Gambar 9.17
String Collection Editor
Gambar 9.18 menggunakan kelas UjiListBoxForm untuk menambah,
menghapus, dan membersihkan item-item dari ListBox
tampilListBox. Kelas UjiListBoxForm menggunakan TextBox masukanTextBox untuk memampukan pengguna mengetikkan item baru.
Ketika pengguna mengklik Button Tambah, item baru akan muncul pada tampilLixBox. Sama halnya, jika
pengguna menyeleksi sebuah item dan mengklik Hapus, item tersebut akan terhapus. Ketika diklik, Hapus akan membersihkan semua entri
pada tampilListBox. Pengguna
menghentikan aplikasi dengan mengklik Keluar.
Event handler tambahButton_Click
(baris 20-24) memanggil metode Add
dari koleksi Items pada ListBox. Metode ini mengambil sebuah string sebagai item yang akan
ditambahkan pada tampilListBox. Pada
kasus ini, string yang digunakan
merupakan masukan pengguna dari masukanTextBox
(baris 22). Setelah item ditambahkan, masukanTextBox
dibersihkan (baris 23).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
// Gambar 9.18: UjiListBoxForm.cs
// Program untuk menambah, menghapus,
membersihkan item-item ListBox.
using System;
using
System.Windows.Forms;
namespace UjiListBox
{
// Form menggunakan sebuah TextBox dan empat Button untuk menambah,
// menghapus, dan membersihkan item-item ListBox
public partial class
UjiListBoxForm : Form
{
// konstruktor default
public UjiListBoxForm()
{
InitializeComponent();
} // akhir konstruktor default
// menambah item baru pada ListBox (teks dari TextBox)
// dan membersihkan TextBox
private void tambahButton_Click(object sender, EventArgs e)
{
tampilListBox.Items.Add(masukanTextBox.Text);
masukanTextBox.Clear();
} // akhir metode tambahButton_Click
// menghapus item jika ia diseleksi
private void hapusButton_Click(object sender, EventArgs e)
{
//
memeriksa apakah item diseleksi, jika
ya, dihapuskan
if (tampilListBox.SelectedIndex
!= -1)
tampilListBox.Items.RemoveAt(
tampilListBox.SelectedIndex);
} // akhir metode hapusButton_Click
// menghapus semua item pada ListBox
private void bersihButton_Click(object sender, EventArgs e)
{
tampilListBox.Items.Clear();
} // akhir metode bersihButton_Click
// keluar aplikasi
private void keluarButton_Click(object sender, EventArgs e)
{
Application.Exit();
} // akhir metode keluarButton_Click
} // akhir kelas UjiListBoxForm
} // akhir namespace UjiListBox
|
Event handler hapusButton_Click
(baris 27) menggunakan metode RemoveAt
untuk menghapus sebuah item dari ListBox.
Event handler hapusButton_Click pertama-tama menggunakan properti SelectedIndex untuk menentukan indeks
mana yang diseleksi. Jika SelectedIndex
tidak bernilai -1, maka baris 31-32 akan menghapus item yang terkait dengan
indeks yang terseleksi.
Event handler bersihButton_Click
(baris 36-39) memanggil metode Clear
dari koleksi Items (baris 38). Ini
akan menghapus semua entri pada tampilListBox.
Terakhir, event handler keluarButton_Click (baris 42-45)
menghentika aplikasi dengan memanggil metode Application.Exit (baris 44).
9.7
Kendali CheckedListBox
Kendali CheckedListBox diderivasi dari ListBox
dan menampilkan sebuah CheckBox
dengan tiap itemnya. Item-item dapat ditambahkan melalui metode Add dan AddRange atau melalui String
Collection Editor. CheckedListBox
mengijinkan item jamak untuk dicentang, tetapi seleksi item lebih ketat.
Nilai-nilai untuk properti SelectionMode
hanya None dan One. One membolehkan seleksi tunggal, sedangkan None tidak mengijinkan seleksi. Karena
sebuah item harus diseleksi pada saat mencentang, Anda harus menetapkan SelectionMode menjadi One jika Anda ingin pengguna mencentang
item-item. Beberapa properti, sebuah metode, dan sebuah event dari kelas CheckedListBox
ditampilkan pada Gambar 9.19.
Event ItemCheck
terjadi ketika pengguna mencentang atau tidak mencentang sebuah item CheckListBox. Properti CurrentValue dan NewValue menghasilkan nilai-nilai CheckState untuk keadaa item sekarang dan keadaan item terbaru.
Perbandingan kedua nilai ini memampukan Anda untuk menentukan apakah item CheckedListBox dicentang atau tidak
dicentang. Kendali CheckedListBox
juga memiliki properti SelectedItems
dan SelectedIndices (yang diwarisi
dari kelas ListBox).
Properti, metode dan event
pada kelas CheckedListBox
|
Penjelasan
|
Properti-properti
CheckedListBox
|
|
CheckedItems
|
Menghasilkan koleksi item-item yang
dicentang sebagai sebuah CheckListBox.CheckedListBoxIndexCollection.
Ini membedakannya dari item terseleksi, yang disoroti (tetapi belum tentu
dicentang).
|
CheckedIndices
|
Menghasilkan indeks dari semua item
tercentang sebagai sebuah CheckListBox.CheckedListBoxIndexCollection.
|
CheckOnClick
|
Ketika true dan pengguna mengklik
sebuah item, item tersebut diseleksi dan dicentang atau tidak dicentang.
Secara default, properti ini bernilai false,
yang berarti bahwa pengguna harus menyeleksi sebuah item, kemudian
mengkliknya kembali untuk mencentang atau tidak mencentangnya.
|
SelectionMode
|
Menentukan apakah item-item dapat
diseleksi dan dicentang. Nilai-nilai yang mungkin adalah One (default;
mengijinkan pencentangan jamak) atau None (tidak mengijinkan satupun
pencentangan).
|
Metode pada CheckedListBox
|
|
GetItemChecked
|
Menghasilkan sebuah indeks dan
menghasilkan true jika item
terkait dicentang.
|
Event pada CheckedListBox
|
|
ItemCheck
|
Dipicu
ketika sebuah item dicentang atau tidak dicentang.
|
Properti-properti ItemCheckEventArgs
|
|
CurrentValue
|
Mengindikasikan apakah item terkini
dicentang atau tidak dicentang. Nilai-nilai yang mungkin adalah Checked, Unchecked dan Indeterminate.
|
Index
|
Menghasilkan sebuah indeks
berbasis-nol dari item yang berubah.
|
NewValue
|
Menetapkan
keadaan baru dari sebuah item.
|
Gambar
9.19 Beberapa properti, metode, dan sebuah event dari kelas CheckedListBox
Pada Gambar 9.20, kelas UjiCheckedListBoxForm menggunakan
sebuah CheckedListBox dan sebuah ListBox untuk menampilkan seleksi
buku-buku pilihan pengguna. CheckedListBox
memampukan pengguna untuk menyeleksi beberapa judul. Pada String Collection Editor, item-item tersebut ditambahkan
untuk beberapa buku penulis. ListBox
(dinamai dengan tampilListBox) menampilkan
seleksi pengguna.
Ketika pengguna mencentang atau tidak
mencentang sebuah item pada itemCheckedListBox_ItemCheck,
sebuah event ItemCheck terjadi dan event
handler itemCheckedListBox_ItemCheck
(baris 19-31) dieksekusi. Sebuah statemen if...else
(baris 27-30) menentukan apakah pengguna mencentang atau tidak mencentang
sebuah item pada CheckedListBox.
Baris 27 menggunakan properti NewValue
untuk menentukan apakah item sedang dicentang (CheckState.Checked). Jika pengguna mencentang sebuah item, maka baris
28 akan menambahkan entri yang dicentang pada ListBox tampilListBox.
Jika pengguna tidak mencentang sebuah item, maka baris 30 akan menghapus item
terkait dari tampilListBox. Event handler ini ciptakan dengan memilih CheckedListBox pada mode Design.
Kemudian Anda perlu melihat event-event pada jendela Properties dan mengklik dua kali pada event ItemCheck. Event default untuk sebuah CheckedListBox adalah sebuah event SelectedIndexChanged.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
//
Gambar 9.20: UjiCheckedListBoxForm.cs
//
Menggunakan sebuah CheckedListBox untuk menambahkan item-item.
using
System;
using
System.Windows.Forms;
namespace
UjiCheckedListBox
{
// Form menggunakan sebuah CheckedListBox
untuk menambahkan item-item
public
partial class UjiCheckedListBoxForm : Form
{
// konstruktor default
public
UjiCheckedListBoxForm()
{
InitializeComponent();
} // akhir konstruktor default
// item yang akan diubah
// menambahkan atau menghapus item
private
void itemCheckedListBox_ItemCheck(
object sender, ItemCheckEventArgs e)
{
// mendapatkan referensi dari
item terseleksi
string
item = itemCheckedListBox.SelectedItem.ToString();
// jika item dicentang, tambahkan
ke ListBox
// sebaliknya, hapus dari ListBox
if (e.NewValue == CheckState.Checked)
tampilListBox.Items.Add(item);
else
tampilListBox.Items.Remove(item);
} // akhir metode
itemCheckedListBox_ItemCheck
} // akhir kelas UjiCheckedListBoxForm
} //
akhir namespace UjiCheckedListBox
|
9.8
Kendali ComboBox
Kendali ComboBox menggabungkan fitur-fitur TextBox dengan daftar drop-down (sebuah komponen GUI yang memuat
sebuah daftar dengan suatu nilai yang dapat diseleksi). ComboBox biasanya muncul sebagai sebuah TextBox dengan sebuah panah bawah di sisi kanannya. Secara default,
pengguna dapat memasukkan teks pada TextBox
atau mengklik panah bawah untuk menampilkan sebuah daftar dari item-item
terdefinisi. Jika pengguna memilih sebuah elemen dari daftar ini, elemen tersebut
akan ditampilkaan pada TextBox. Jika
daftar itu memuat lebih banyak elemen daripada yang dapat ditampilkan pada
daftar drop-down, maka batang penggeser akan muncul. Jumlah item maksimum yang
dapat ditampilkan oleh sebuah daftar drop-down pada suatu waktu ditetapkan dengan
properti MaxDropDownItems. Gambar
9.21 menampilkan contoh ComboBox
pada tiga jenis keadaan.
Sama seperti kendali ListBox, Anda dapat menambah
objek-objek pada koleksi Items
secara programatikal, menggunakan metode Add
dan AddRange, atau secara visual,
dengan String Collection Editor.
Gambar 9.22 mencantumkan beberapa properti dan sebuah event dari kelas ComboBox.
Gambar 9.21 Demonstrasi ComboBox
Properti dan event pada kelas ComboBox
|
Penjelasan
|
Properti-properti
ComboBox
|
|
DropDownStyle
|
Menentukan tipe dari ComboBox. Nilai Simple berarti bahwa porsi teks dapat diedit dan porsi pada
daftar dapat dilihat. Nilai DropDown
(default) berarti bahwa porsi teks dapat diedit tetapi pengguna perlu
mengklik tombol panah untuk melihat porsi daftar. Nilai DropDownList berarti bahwa porsi teks tidak dapat diedit dan
penguna perlu mengklik tombol panah untuk melihat porsi daftar.
|
Items
|
Koleksi item-item pada kendali ComboBox.
|
MaxDropDownItems
|
Menetapkan jumlah item maksimum
(antara 1 dan 100) yang dapat ditampilkan oleh daftar drop-down. Jika jumlah
item melebih jumlah item maksimum yang dapat ditampilkan, batang penggeser
akan muncul.
|
SelectedIndex
|
Menghasilkan indeks dari item
terseleksi, atau -1 jika tidak ada yang diseleksi.
|
SelectedItem
|
Menghasilkan sebuah referensi ke item
terseleksi.
|
Sorted
|
Mengindikasikan apakah item-item
diurutkan secara alfabetikal. Pengaturan nilai properti ini menjadi true akan mengurutkan item-item.
Nilai defaultnya adalah false.
|
Event pada CheckedListBox
|
|
SelectedIndexChanged
|
Dipicu
ketika indeks yang terseleksi berubah (seperti ketika sebuah item yang
berbeda diseleksi). Ini merupakan event
default ketika kendali diklik dua kali pada designer.
|
Gambar 9.22 Beberapa properti dan sebuah event
dari kelas ComboBox
Properti DropDownStyle menentukan tipe dari ComboBox dan direpresentasikan sebagai sebuah nilai dari enumerasi ComboBox, yang memuat nilai-nilai Simple, DropDown, dan DropDownList.
Opsi Simple tidak menampilkan panah
bawah. Melainkan, sebuah batang penggeser akan muncul di samping kendali, agar
pengguna dapat memilih pilihan dari daftar yang tersedia. Pengguna dapat mengetikkan
pilihannya. Nilai enumerasi DropDown
(default) menampilkan sebuah daftar drop-down ketika panah bawah diklik (atau
kunci panah bawah ditekan). Pengguna dapat mengetikkan sebuah item baru pada ComboBox. Nilai enumerasi adalah DropDownList, yang menampilkan sebuah
daftar drop-down tetapi tidak mengijinkan pengguna untuk mengetikkan pilihan
pada TextBox.
Kendali ComboBox memiliki properti Items
(sebuah koleksi), SelectedItem, dan SelectedIndex, yang sama dengan
properti-properti terkait pada ListBox.
Paling banyak terdapat satu item terseleksi pada ComboBox. Jika tidak ada item yang diseleksi, maka properti SelectedIndex bernilai -1. Ketika item
terseleksi berubah, event SelectedIndexChanged akan terjadi.
Kelas UjiComboBox (Gambar 9.23) memampukan pengguna untuk menyeleksi
sebuah bangun untuk digambarkan menggunakan ComboBox. Bangun-bangun tersebut adalah lingkaran, elips, persegi,
atau pie (dalam versi terisi dan versi kosong). ComboBox pada contoh ini tidak dapat diedit, jadi pengguna tidak
dapat mengetik sesuatu pada TextBox.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// Gambar 9.23: UjiComboBoxForm.cs
// Menggunakan ComboBox untuk memilih
bangun yang akan digambar.
using System;
using System.Drawing;
using
System.Windows.Forms;
namespace UjiComboBox
{
// Form menggunakan ComboBox untuk memilih bangun yang akan digambar
public partial class
UjiComboBoxForm : Form
{
// konstruktor default
public UjiComboBoxForm()
{
InitializeComponent();
} // akhir konstruktor default
// mendapatkan indeks dari bangun
private void
gambarComboBox_SelectedIndexChanged(
object sender, EventArgs e)
{
// menciptakan objek grafik, Pen
dan SolidBrush
Graphics grafikKu = base.CreateGraphics();
// menciptakan Pen menggunakan
warna DarkRed
Pen penKu = new Pen( Color.DarkRed );
// menciptakan SolidBrush
menggunakan warna DarkRed
SolidBrush solidBrushKu = new SolidBrush( Color.DarkRed );
// membersihkan area
penggambaran,menetapkannya menjadi warna white
grafikKu.Clear( Color.White );
// mencari indeks, menggambar
bangun tertentu
switch (gambarComboBox.SelectedIndex)
{
case 0: // kasus Lingkaran diseleksi
grafikKu.DrawEllipse(
penKu, 50, 50, 150, 150 );
break;
case 1: // kasus Persegi diseleksi
grafikKu.DrawRectangle(
penKu, 50, 50, 150, 150 );
break;
case 2: // kasus Elips diseleksi
grafikKu.DrawEllipse(
penKu, 50, 85, 150, 115 );
break;
case 3: // kasu Pie diseleksi
grafikKu.DrawPie( penKu,
50, 50, 150, 150, 0, 45 );
break;
case 4: // kasus Lingkaran Terisi diseleksi
grafikKu.FillEllipse(
solidBrushKu, 50, 50, 150, 150 );
break;
case 5: // kasus Persegi Terisi diseleksi
grafikKu.FillRectangle(
solidBrushKu, 50, 50, 150,
150 );
break;
case 6: // kasus Elips Terisi diseleksi
grafikKu.FillEllipse(
solidBrushKu, 50, 85, 150, 115 );
break;
case 7: // kasus Pie Terisi diseleksi
grafikKu.FillPie(
solidBrushKu, 50, 50, 150, 150, 0,
45 );
break;
} // akhir switch
grafikKu.Dispose(); // melepaskan
objek Graphics
} // akhir metode gambarComboBox_SelectedIndexChanged
} // akhir kelas UjiComboBoxForm
} // akhir namespace UjiComboBox
|
Setelah menciptakan ComboBox citraComboBox, Anda membuatnya
agar tidak bisa diedit dengan menetapkan properti DropDownStyle menjadi DropDownList
pada jendela Properties. Berikutnya,
Anda menambahkan item-item Lingkaran, Persegi, Elips, Pie, Lingkaran Terisi,
Persegi Terisi, Elips Terisi, dan Pie Terisi pada koleksi Items menggunakan String Collection Editor.
Kapanpun pengguna menyeleksi sebuah item dari citraComboBox, event SelectedIndexChanged akan terjadi dan event handler citraComboBox_SelectedIndexChanged (baris 19-66) akan dieksekusi.
Baris 23-29 menciptakan sebuah objek Graphics,
yaitu sebuah Pen dan sebuah SolidBrush, yang dipakai untuk
menggambar pada Form. Objek Graphics (baris 23) memampukan sebuah pen dan brush untuk menggambar pada suatu komponen, menggunakan salah satu
dari beberapa metode Graphics.
Objek Pen (baris 26) dipakai oleh metode DrawEllipse, DrawRectangle,
dan DrawPie (baris 38, 41, 44, dan
47) untuk menggambarkan outline dari
tiap bangun. Objek SolidBrush (baris
29) dipakai oleh metode FillEllipse,
FillRectangle, dan FillPie (baris 50, 53-54, 57, dan
60-61) untuk mengisi bangun terkait. Baris 32 mewarnai Form menjadi White,
menggunakan metode Clear dari kelas Graphics.
Aplikasi menggambar sebuah bangun
berdasarkan indeks dari item terseleksi. Statemen switch (baris 35-63)
menggunakan citraComboBox.SelectedIndex untuk menentukan item
mana yang diseleksi pengguna. Metode DrawEllipse
dari kelas Graphics (baris 38)
mengambil sebuah Pen, dan koordinat
(x, y) dari pojok kiri-atas, lebar dan tinggi kotak pembatas (dimana elips akan
ditampilkan). Titik awal sistem koordinat berada pada pojok kiri-atas dari Form; koordinat x bertambah ke kanan,
dan koordinat y bertambah ke bawah. Baris 38 menggambarkan sebuah lingkaran.
Baris 44 menggambarkan sebuah elips.
Metode DrawRectangle dari kelas Graphics
(baris 41) mengambil sebuah Pen,
koordinat (x, y) dari pojok kiri-atas, dan lebar dan tinggi dari persegi yang
akan digambarkan. Metode DrawPie
(baris 47) menggambar sebuah pie sebagai potongan dari elips. Metode DrawPie mengambil sebuah Pen, koordinat (x, y) dari pojok
kiri-atas, dan sudut (dalam derajat). Sudut tersebut bertambah seiring dengan
arah jarum jam. Metode FillEllipse
(baris 50 dan 57), FillRectangle
(baris 53-54), dan FillPie (baris
60-61) sama dengan versi tak-terisi masing-masing, kecuali bahwa ketiga metode
ini mengambil sebuah objek Brush
(menggantikan objek Pen).
9.9
Kendali TreeView
Kendali TreeView menampilkan simpul-simpul secara hierarkis pada sebuah
pohon. Secara tradisional, simpul merupakan objek yang memuat nilai dan dapat
dihubungkan ke simpul-simpul lain. Simpul induk memuat simpul-simpul anak, dan
simpul anak bisa menjadi induk bagi simpul-simpul lain. Dua simpul anak yang
memiliki simpul induk yang sama dipandang sebagai simpul saudara atau simpul
setingkat. Pohon merupakan koleksi
simpul, yang biasanya diorganisir secara hierarkis. Simpul induk pertama pada
pohon adalah simpul akar (TreeView
dapat memiliki beberapa simpul akar). Sebagai contoh, sistem file pada komputer
dapat direpresentasikan sebagi pohon. Direktori level-atas (misalnya, C:)
merupakan simpul akar, dimana tiap subfolder dari C: akan menjadi simpul anak
dan setiap folder anak memiliki anak-anaknya sendiri. Kendali TreeView berguna dalam menampilkan
informasi secara hierarkis, seperti struktur file yang telah dijelaskan. Gambar
9.24 menampilkan sebuah kendali TreeView
sederhana pada suatu Form.
Gambar 9.24 TreeView
menampilkan sebuah pohon sederhana
Simpul induk dapat diekspansi atau
disusutkan dengan mengklik kotak + atau kotak – yang ada di sisi kirinya.
Simpul-simpul tanpa anak tidak memiliki kotak ini.
Simpul-simpul pada sebuah TreeView merupakan instans-instans dari
kelas TreeNode. Setiap TreeNode memiliki sebuah koleksi Nodes (bertipe TreeNodeCollection), yang memuat daftar TreeNode-TreeNode lain
(simpul-simpul anaknya). Properti Parent menghasilkan sebuah referensi ke
simpul induk (atau null jika simpul adalah simpul akar). Gambar 9.25 dan Gambar
9.26 mencantumkan beberapa properti dari TreeView
dan TreeNode, beberapa metode dari TreeNode, dan sebuah event dari TreeView.
Properti dan event pada kelas TreeView
|
Penjelasan
|
Properti-properti
TreeView
|
|
CheckBoxes
|
Mengindikasikan apakah CheckBox muncul di samping simpul.
Nilai true menampilkan CheckBox. Nilai defaultnya adalah false.
|
ImageList
|
Menetapkan sebuah objek ImageList yang memuat ikon-ikon
simpul. Sebuah objek ImageList
merupakan koleksi yang memuat objek-objek Image.
|
Nodes
|
Menghasilkan koleksi yang memuat
beberapa TreeNode pada kendali
sebagai sebuah TreeNodeCollection.
Properti ini memuat metode Add
(menambahkan sebuah objek TreeNode),
Clear (menghapus keseluruhan
koleksi), dan Remove (menghapus
simpul tertentu). Penghapusan simpul induk akan menghapus semua simpul
anaknya.
|
SelectedNode
|
Simpul terseleksi.
|
Event pada TreeView
|
|
AfterSelect
|
Dipicu
setelah simpul yang terseleksi berubah. Ini merupakan event default ketika kendali diklik ganda pada designer.
|
Gambar 9.25 Beberapa properti dan sebuah event
dari kelas TreeView
Properti dan event pada kelas TreeNode
|
Penjelasan
|
Properti-properti
TreeNode
|
|
Checked
|
Mengindikasikan apakah TreeNode dicentang atau tidak
(properti CheckBox harus
ditetapkan menjadi true pada TreeView
induk).
|
FirstNode
|
Menetapkan simpul pertama pada
koleksi Nodes (yaitu, simpul
pertama pada pohon).
|
FullPath
|
Mengindikasikan path dari sebuah simpul, diawali dari akar pohon.
|
ImageIndex
|
Menetapkan indeks citra pada ImageList yang akan ditampilkan
ketika simpul dideseleksi.
|
LastNode
|
Menetapkan simpul terakhir pada
koleksi Nodes (yaitu, simpul
terakhir pada pohon).
|
NextNode
|
Simpul selevel (saudara) sesudahnya.
|
Nodes
|
Koleksi beberapa TreeNode yang dimuat di dalam simpul terkini (yaitu, semua anak
dari simpul terkini). Ia memuat metode Add
(menambahkan sebuah objek TreeNode),
Clear (menghapus keseluruhan
koleksi), dan Remove (menghapus
simpul tertentu). Penghapusan simpul induk akan menghapus semua simpul
anaknya.
|
PrevNode
|
Simpul selevel (saudara) sebelumnya.
|
SelectedImageIndex
|
Menetapkan indeks dari citra di dalam
ImageList yang akan dipakai ketika
simpul diseleksi.
|
Text
|
Menetapkan teks pada TreeNode.
|
Metode-metode pada kelas TreeNode
|
|
Collapse
|
Menyusutkan
sebuah simpul.
|
Expand
|
Mengekspansi
sebuah simpul.
|
ExpandAll
|
Mengeskpansi
semua anak dari sebuah simpul.
|
GetNodeCount
|
Menghasilkan
jumlah simpul anak.
|
Gambar 9.26 Beberapa properti dan metode dari kelas TreeNode
Untuk menambahkan simpul-simpul pada TreeView secara visual, Anda bisa
mengklik tombol elips yang ada di samping properti Nodes pada jendela Properties. Ini akan membuka TreeNode Editor (Gambar 9.27), yang menampilkan sebuah pohon kosong yang
merepresentasikan TreeView. Ada
beberapa Button untuk menciptakan
dan menambahkan akar atau menghapusnya. Di sisi kanan adalah properti-properti
pada simpul terkini. Di sini, Anda bisa menamai-ulang simpul.
Gambar 9.27 TreeNode
Editor
Untuk menambah simpul-simpul secara
programatikal, Anda pertama-tama menciptakan sebuah simpul akar. Anda
menciptakan sebuah objek TreeNode
yang baru dan melewatkannya sebuah string yang akan ditampilkan. Kemudian Anda
memanggil metode Add untuk
menambahkan TreeNode yang baru ini
pada koleksi Nodes dari TreeView. Jadi, untuk menambahkan
sebuah simpul akar pada TreeView
treeViewKu, Anda menuliskan
treeViewKu.Nodes.Add( new
TreeNode( akarLabel ) );
dimana treeViewKu merupakan TreeView
tempat destinasi penambahan simpul-simpul, dan akarLabel merupakan teks yang akan ditampilkan pada treeViewKu. Untuk menambahkan anak-anak
pada sebuah simpul akar, Anda menambahkan beberapa TreeNode baru pada koleksi Nodes.
Anda memilih simpul akar tertentu dari TreeView
dengan menuliskan
treeViewKu.Nodes[ indeksKu
]
dimana indeksKu merupakan indeks dari simpul akar yang ada pada koleksi Nodes dari treeViewKu. Anda menambahkan simpul-simpul pada simpul anak
menggunakan proses yang sama. Untuk menambahkan sebuah simpul anak pada simpul
akar dengan indeks indeksKu,
dituliskan
treeViewKu.Nodes[ indeksKu
].Nodes.Add( new TreeNode( anakLabel ) );
Kelas TreeViewStrukturDirektoriForm (Gambar 9.28) menggunakan sebuah TreeView untuk menampilkan isi dari
sebuah direktori yang dipilih pengguna. Sebuah TextBox dan Button
dipakai untuk menetapkan direktori. Pertama-tama, pengguna memasukkan path
penuh dari direktori yang ingin ditampilkan. Kemudian pengguna mengklik Button untuk menetapkan direktori
tertentu sebagai simpul akar pada TreeView.
Setiap subdirektori pada direktori ini menjadi simpul anak. Tataletak ini sama
dengan yang dipakai pada Windows Explorer. Folder-folder dapat
dieksepasi atau dikolapskan dengan mengklik kotak plus atau kotak minus yang
ada di sampingnya.
Ketika pengguna mengklik enterButton, semua simpul pada direktoriTreeView dihapus semuanya
(baris 86). Kemudian, jika direktori memang ada (baris 73), path yang dimasukkan pada masukanTextBox dipakai untuk
menciptakan simpul akar. Baris 76 menambahkan direktori pada direktoriTreeView sebagai simpul akar,
dan baris 79-80 memangil metode IsiTreeView
(baris 21-62), yang mengambil sebuah direktori (sebuah string) dan sebuah
simpul induk. Metode PopulateTreeView
kemudian menciptakan simpul-simpul anak yang terkait dengan sub-subdirektori
dari direktori yang diterimanya sebagai argumen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
// Gambar 9.28:
TreeViewStrukturDirektoriForm.cs
// Menggunakan TreeView untuk
menampilkan struktur direktori.
using System;
using
System.Windows.Forms;
using System.IO;
namespace
TreeViewStrukturDirektori
{
// Form menggunakan TreeView untuk menampilkan struktur direktori
public partial class
TreeViewStrukturDirektoriForm : Form
{
string substringDirektori; //menyimpan bagian akhir dari nama path
// konstruktor default
public
TreeViewStrukturDirektoriForm()
{
InitializeComponent();
} // akhir konstruktor default
// mengisi simpul terkiti dengan sub-subdirektori
public void IsiTreeView(
string nilaiDirektori, TreeNode simpulInduk )
{
// array menyimpan semua
subdirektori di dalam direktori
string[] arrayDirektori =
Directory.GetDirectories(
nilaiDirektori );
// mengisi simpul terkini dengan
sub-subdirektori
try
{
// memeriksa apakah
subdirektori ada
if ( arrayDirektori.Length != 0 )
{
// untuk tiap subdirektori, diciptakan TreeNode baru,
// menambahkannya sebagai anak dari simpul terkini dan
// mengisi simpul-simpul anak dengan sub-subdirektori
foreach ( string
direktori in arrayDirektori )
{
// mendapatkan bagian
akhir dari nama path
// dengan memanggil GetFileNameWithoutExtension
// dari kelas Path
substringDirektori =
Path.GetFileNameWithoutExtension( direktori );
// menciptakan
TreeNode untuk direktori terkini
TreeNode simpulKu = new TreeNode( substringDirektori );
// menambahkan simpul
terkini pada simpul induk
simpulInduk.Nodes.Add( simpulKu );
// secara rekursif
mengisi setiap subdirektori
IsiTreeView(
direktori, simpulKu );
} // akhir foreach
} // akhir if
} //akhir try
// menangkap eksepsi
catch ( UnauthorizedAccessException )
{
simpulInduk.Nodes.Add( "Akses ditolak" );
} // akhir catch
} // akhir metode IsiTreeView
// menangani event Click pada enterButton
private void enterButton_Click(object sender, EventArgs e)
{
// menghapus semua simpul
direktoriTreeView.Nodes.Clear();
// memeriksa apakah direktori yang dimasukkan pengguna ada
// jika ada, kemudian isi pada
TreeView,
// jika tidak ada, tampilkan
MessageBox error
if ( Directory.Exists( masukanTextBox.Text ) )
{
// menambahkan nama path penuh pada direktoriTreeView
direktoriTreeView.Nodes.Add(masukanTextBox.Text);
// menyisipkan sub-subfolder
IsiTreeView(
masukanTextBox.Text,
direktoriTreeView.Nodes[0]);
}
// menampilkan MessageBox jika
direktori tidak ditemukan
else
MessageBox.Show(masukanTextBox.Text +
" tidak
ditemukan.",
"Direktori Tidak Ditemukan", MessageBoxButtons.OK,
MessageBoxIcon.Error );
} // akhir metode enterButton_Click
} // akhir metode TreeViewStrukturDirektoriForm
} // akhir namespace
TreeViewStrukturDirektori
|
Metode IsiTreeView (baris 21-62) mendapatkan daftar subdirektori,
menggunakan metode GetDirectories
dari kelas Directory (namespace System.IO) pada baris 25-26. Metode GetDirectories mengambil sebuah string (direktori terkini) dan menghasilkan sebuah array yang
memuat string-string (sub-subdirektori). Jika sebuah direktori tidak dapat
diakses karena alasan keamanan, maka eksepsi UnAuthorizedAccessException akan dilempar. Baris 58-61 akan
menangkap eksepsi ini dan menambahkan sebuah simpul yang memuat “Akses ditolak”.
9.10
Kendali ListView
Kendali ListView sama dengan ListBox,
dimana keduanya menampilkan daftar yang dapat dipilih oleh pengguna (satu atau
lebih item). ListView lebih kompleks
karena dapat menampilkan item-item yang berbeda format. Sebagai contoh, sebuah ListView dapat menampilkan ikon-ikon di
samping item-item (dikendalikan oleh properti SmallImageList, LargeImageList,
atau StateImageList) dan menampilkan
detil dari item-item pada kolom-kolom. Properti MultiSelect (sebuah bool)
menentukan apakah item jamak dapat diseleksi atau tidak. CheckBox dapat dicantumkan dengan menetapkan properti CheckBoxes (sebuah bool) menjadi true, agar
penampilan ListView mirip dengan CheckedListBox. Properti View menetapkan tataletak dari ListBox. Properti Activate menentukan metode yang akan dipakai pengguna untuk memilih
item. Detil dari properti-properti ini dan event
ItemActivate dijelaskan pada Gambar
9.29.
Properti dan event pada kelas ListView
|
Penjelasan
|
Properti-properti
ListView
|
|
Activation
|
Menentukan bagaimana pengguna
mengaktivasi sebuah item. Properti ini mengambil sebuah nilai pada enumerasi ItemActivation. Nilai-nilai yang
mungkin adalah OneClick (aktivasi
satu-klik), TwoClick (aktivasi
klik ganda, item mengubah warnanya ketika diseleksi), dan Standard (default; aktivasi klik
ganda, item tidak mengubah warnanya).
|
CheckBoxes
|
Mengindikasikan apakah item-item
muncul dengan CheckBox. Nilai true menampilkan CheckBox. Default adalah false.
|
LargeImageList
|
Menetapkan ImageList yang memuat ikon-ikon besar untuk ditampilkan.
|
Items
|
Menghasilkan koleksi ListViewItem pada kendali.
|
MultiSelect
|
Menentukan apakah seleksi jamak
diijinkan. Nilai default adalah true, yang membolehkan seleksi jamak.
|
SelectedItems
|
Menghasilkan koleksi dari item-item
terseleksi sebagai sebuah ListView.SelectedListViewItemCollection.
|
SmallImageList
|
Menetapkan ImageList yang memuat ikon kecil untuk ditampilkan.
|
View
|
Menentukan penampilan dari ListViewItems. Nilai-nilai yang
mungkin adalah LargeIcon (default;
ikon berukuran besar ditampilkan, dimana item-item dapat ditempatkan pada
beberapa kolom), SmallIcon (ikon
berukuran kecil ditempilkan, dimana item-item dapat ditempatkan pada beberapa
kolom), List (ikon berukuran kecil
ditempilkan, dimana item-item ditempatkan pada sebuah kolom), Details ( seperti List, tetapi beberapa kolom informasi
ditampilkan per item), dan Tile
(ikon berukuran besar ditampilkan, informasi disediakan di sisi kanan ikon;
hanya valid untuk Windows XP dan versi selanjutnya).
|
Event pada kelas ListView
|
|
Click
|
Dipicu ketika sebuah item diklik. Ini
merupakan event default.
|
ItemActivate
|
Dipicu ketika sebuah item pada ListView diaktivasi (diklik atau
diklik ganda). Tidak memuat spesifikasi dari item mana yang diaktivasi.
|
Gambar 9.29 Beberapa properti dan event dari
kelas ListView
ListView memampukan Anda untuk mendefinisikan
citra-citra yang dipakai sebagai ikon untuk item-item ListView. Untuk menampilkan citra, sebuah komponen ImageList diperlukan. Anda menggeret ImageList pada component tray. Kemudian, Anda memilih properti Images pada jendela Properties untuk menampilkan Image Collection Editor
(Gambar 9.30). Di sini, Anda dapat
menjelajah citra-citra yang ingin Anda tambahkan pada ImageList, yang memuat sebuah array (terdiri-dari Image-Image). Penambahan citra dengan cara ini akan menanamkannya pada
aplikasi (seperti sumberdaya), sehingga citra itu tidak lagi perlu disertakan
secara terpisah.
Gambar 9.30 Jendela Image Collection Editor untuk sebuah komponen ImageList
9.11
Kendali TabControl
TabControl menciptakan jendela-jendela ditab,
seperti pada Visual Studio (Gambar 9.31). Ini memampukan Anda untuk mempunyai
lebih banyak informasi dengan ruang yang sama pada sebuah Form dan untuk mengelompokkan data yang tertampil secara logis. TabControl memuat objek-objek TabPage, yang mirip dengan Panel dan GroupBox. TabPage dapat
memuat kendali-kendali. Anda pertama-tama menambahkan kendali-kendali pada
objek-objek TabPage, kemudian
menambahkan TabPage-TabPage tersebut pada TabControl. Hanya satu TabPage yang ditampilkan pada suatu
waktu. Untuk menambahkan objek-objek pada TabPage
dan TabControl, Anda menuliskan
tabPageKu.Controls.Add( controlKu );
tabControlKu.TabPages.Add(
tabPageKu );
Gambar 9.31 Jendela-jendela yang ditab pada Visual
Studio
Pada kedua statemen tersebut dipanggila
metode Add dari koleksi Controls dan metode Add dari koleksi TabPages. Contoh itu menambahkan TabControl controlKu
pada TabPage tabPageKu, kemudian menambahkan tabPageKu pada tabControlKu.
Cara lain, Anda dapat menggunakan metode AddRange
untuk menambahkan suatu array yang memuat beberapa TabPage atau beberapa kendali pada sebuah TabControl atau TabPage.
Gambar 9.32 menampilkan sebuah contoh TabControl.
Gambar 9.32 TabControl
dengan beberapa TabPage
Anda dapat menambahkan beberapa TabControl secara visual dengan
menggeret dan menjatuhkannya pada sebuah Form
dalam mode Design. Untuk menambahkan
beberapa TabPage dalam mode Design, Anda mengklik-kanan TabControl tersebut dan memiliki Add Tab (Gambar 9.33). Alternatif lain, Anda bisa mengklik properti TabPages pada jendela Properties dan menambahkan tab pada
dialog yang muncul. Untuk mengubah label tab, Anda bisa lakukan melalui
properti Text dari TabPage tertentu. Anda dapat
menambahkan kendali pada TabPage
dengan menggeret dan menjatuhkan item kendali dari Toolbox. Untuk melihat TabPage
yang berbeda, Anda mengklik tab lain. Beberapa properti dan sebuah event dari kelas TabControl dijelaskan pada Gambar 9.34.
Setiap TabPage akan memicu sebuah event
Click ketika tabnya diklik. Event handler untuk event ini dapat diciptakan dengan mengklik ganda tubuh dari TabPage.
Kelas MenggunakanTabForm (Gambar 9.35) menggunakan sebuah TabControl untuk menampilkan pelbagai
opsi yang berkaitan dengan teks pada sebuah label (Warna, Ukuran, dan Pesan). TabPage terakhir menampilkan pesan Tentang, yang menjelaskan kegunaan dari TabControl.
Gambar 9.33 Beberapa TabPage yang ditambahkan pada sebuah TabControl
Properti dan event pada kelas TabControl
|
Penjelasan
|
Properti-properti
TabControl
|
|
ImageList
|
Menampilkan citra-citra yang akan
ditampilkan pada tab-tab.
|
ItemSize
|
Menetapkan ukuran tab.
|
Multiline
|
Mengindikasikan apakah lebih dari
satu baris tab dapat ditampilkan.
|
SelectedIndex
|
Indeks dari TabPage terseleksi.
|
SelectedTab
|
TabPage yang terseleksi.
|
TabCount
|
Menghasilkan jumlah dari halaman tab.
|
TabPages
|
Menghasilkan koleksi yang memuat TabPage-TabPage di dalam TabControl sebagai sebuah TabControl.TabCollection.
|
Event pada kelas TabControl
|
|
SelectedIndexChanged
|
Dipicu ketika sebuah item diklik. Ini
merupakan event default.
|
Gambar 9.34 Beberapa properti dan event dari
kelas TabControl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
// Gambar 9.35: MenggunakanTabForm.cs
// Menggunakan TabControl untuk
menimpalkan pelbagai pengaturan font.
using System;
using System.Drawing;
using
System.Windows.Forms;
namespace MenggunakanTab
{
// Form menggunakan beberapa Tab dan RadioButton
public partial class
MenggunakanTabForm : Form
{
// konstruktor default
public MenggunakanTabForm()
{
InitializeComponent();
} // akhir konstruktor default
// event handler untuk RadioButton Hitam
private void hitamRadioButton_CheckedChanged(
object sender, EventArgs e)
{
tampilLabel.ForeColor = Color.Black; // mengubah warna
menjadi hitam
} // akhir metode hitamRadioButton_CheckedChanged
// event handler untuk RadioButton Merah
private void merahRadioButton_CheckedChanged(
object sender, EventArgs e)
{
tampilLabel.ForeColor = Color.Red; // mengubah warna menjadi
merah
} // akhir metode merahRadioButton_CheckedChanged
// event handler untuk RadioButton Hijau
private void hijauRadioButton_CheckedChanged(
object sender, EventArgs e)
{
tampilLabel.ForeColor = Color.Green; // mengubah warna
menjadi hijau
} // akhir metode hijauRadioButton_CheckedChanged
// event handler untuk RadioButton 12 point
private void
ukuran12RadioButton_CheckedChanged(
object sender, EventArgs e)
{
// mengubah ukuran font menjadi
12
tampilLabel.Font = new Font(tampilLabel.Font.Name, 12);
} // akhir metode ukuran12RadioButton_CheckedChanged
// event handler untuk RadioButton 16 point
private void
ukuran16RadioButton_CheckedChanged(
object sender, EventArgs e)
{
// mengubah ukuran font menjadi
16
tampilLabel.Font = new Font(tampilLabel.Font.Name, 16);
} // akhir metode ukuran16RadioButton_CheckedChanged
// event handler untuk RadioButton 20 point
private void
ukuran20RadioButton_CheckedChanged(
object sender, EventArgs e)
{
// mengubah ukuran font menjadi
20
tampilLabel.Font = new Font(tampilLabel.Font.Name, 20);
} // akhir metode ukuran20RadioButton_CheckedChanged
// event handler untuk RadioButton Hallo!
private void halloRadioButton_CheckedChanged(
object sender, EventArgs e)
{
tampilLabel.Text = "Hallo!"; // mengubah teks
menjadi Hallo!
} // akhir metode halloRadioButton_CheckedChanged
// event handler untuk RadioButton Selamat!
private void
selamatRadioButton_CheckedChanged(
object sender, EventArgs e)
{
tampilLabel.Text = "Selamat!"; // mengubah teks
menjadi Selamat!
} // akhir metode selamatRadioButton_CheckedChanged
} // akhir kelas MenggunakanTabForm
} // akhir namespace MenggunakanTab
|
No comments:
Post a Comment