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.