Event TextChanged dan KeyPress pada Visual Basic .NET
Posted: 16 Oct 2013, Last updated: 17 Aug 2015
Meskipun pada windows telah tersedia cara default untuk berpindah kontrol, yaitu dengan menggunakan tombol TAB dan SHIFT+TAB, tapi seringkali pengguna aplikasi yang telah kita buat tidak terbiasa menggunakan tombol TAB untuk berpindah fokus kontrol. Seringkali mereka meminta agar fokus kontrol berpindah ketika mereka menekan tombol Enter.
Pada blog ini, Saya akan mendemonstrasikan cara melakukan hal seperti di atas. Pertama-tama, kita buat sebuah aplikasi Windows Forms Visual Basic dan desain tampilan seperti berikut:
Kontrol-kontrol di atas, secara berturut-turut, saya beri nama: txtNamaDepan, txtNamaBelakang, txtNamaLengkap, cboJK, mtxLahir, txtAlamat, btnSimpan, btnBatal. Dengan properties Multiline pada txtAlamat dibuat menjadi True. Berikutnya dobel klik Form dan ketikkan kode Form1_Load berikut:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cboJK.Items.Add("Laki-laki") cboJK.Items.Add("Perempuan") cboJK.SelectedItem = Nothing mtxLahir.Mask = "00-00-0000" mtxLahir.ValidatingType = GetType(DateTime) txtNamaLengkap.Enabled = False End Sub
Kemudian dobel klik txtNamaDepan dan txtNamaBelakang untuk membuat event TextChanged pada masing-masing TextBox dan tambahkan fungsi buatNamaLengkap sehingga kode program menjadi seperti berikut:
Private Sub txtNamaDepan_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNamaDepan.TextChanged buatNamaLengkap() End Sub Private Sub txtNamaBelakang_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNamaBelakang.TextChanged buatNamaLengkap() End Sub Private Sub buatNamaLengkap() txtNamaLengkap.Text = txtNamaDepan.Text & " " & txtNamaBelakang.Text End Sub
Kemudian masih di dalam halaman kode Form1.vb, pada pilihan kontrol di sebelah kiri atas, pilih txtNamaDepan, pada pilihan kontrol di sebelah kanan, pilih KeyPress, kemudian ketikkan kode berikut:
Private Sub kontrol_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles _ txtNamaDepan.KeyPress, txtNamaBelakang.KeyPress, mtxLahir.KeyPress, cboJK.KeyPress If (e.KeyChar = ChrW(Keys.Enter)) Then SendKeys.Send("{TAB}") e.Handled = True End If End Sub
Perhatikan bahwa nama fungsi txtNamaDepan_KeyPress diubah menjadi kontrol_KeyPress agar lebih sesuai karena fungsi ini digunakan untuk banyak kontrol sekaligus, seperti tampak pada tambahan event pada pernyataan handle di bagian akhir deklarasi fungsi. Handles adalah pernyataan yang menyatakan event yang dikelola oleh suatu fungsi.
Sebetulnya masih banyak yang dapat dibahas pada form ini, seperti misalnya cara validasi tanggal yang valid pada MaskedTextBox dan kode program pada tombol simpan. Akan tetapi mungkin hal itu kita simpan sampai blog yang selanjutnya.