FilteredTextbox di Aplikasi Desktop

Sejak pertama kali belajar .NET, saya hanya fokus pada aplikasi web (ASP.net). Projek-projek yang saya kerjakan semuanya adalah aplikasi web. Sekitar satu minggu lalu, pertama kalinya saya menerima projek yang berbasis desktop. Sebenarnya pekerjaan ini ditujukan kepada teman saya, tapi karena suatu alasan, pekerjaan itu di oper ke saya, ‘Sekalian belajar’ begitu kata teman saya waktu itu, toh aplikasinya juga sederhana. Sederhana bagi teman saya, tapi susah buat saya yang belum pernah membuat aplikasi sebenarnya di desktop, apalagi tenggat waktunya cuman 1 minggu. Ada banyak ilmu baru yang saya dapatkan dari pekerjaan ini. Mungkin apa yang saya catat disini sepele buat teman-teman yang sudah expert di bidang ini. Tapi ini sangat berharga buat saya,dan sayang kalo harus dilupakan. Siapa tahu nanti diperlukan lagi.

Di ASP.net saya biasa menggunakan AJAX FilteredTextBox untuk memfilter data yang dimasukkan oleh user, apakah user hanya boleh memasukkan angka saja atau huruf saja. Tapi bagaimana dengan textbox di desktop, tentu AJAX tidak bisa digunakan disini. Setelah mendalami petuah-petuah dari teman saya dan juga simbah Google selama 2 hari (lama amat ya…otaknya masih Pentium 4??), filteredTextbox bisa dibuat dengan memanfaatkan event ‘KeyPress‘ dari textbox dan juga kode ASCII dari tombol yang ditekan.

Langsung saja lihat kodenya. Saya buat class dengan nama ‘FilteredTextbox’

Public Class FilteredTextbox
    Public Shared Function IntMode(ByVal e As KeyPressEventArgs) As Boolean
        Select Case Asc(e.KeyChar)
            Case 48 To 57, 8, 13
                Return False
            Case Else
                Return True
        End Select
    End Function

    Public Shared Function DecimalMode(ByVal e As KeyPressEventArgs) As Boolean
        Select Case Asc(e.KeyChar)
            Case 48 To 57, 8, 13, 46, 44
                Return False
            Case Else
                Return True
        End Select
    End Function

    Public Shared Function AlphaMode(ByVal e As KeyPressEventArgs) As Boolean
        Select Case Asc(e.KeyChar)
            Case 65 To 90, 97 To 122, 32, 8, 32, 13
                Return False
            Case Else
                Return True
        End Select
    End Function
End Class

Kode diatas akan menghasilkan nilai false untuk tombol yang benar dan true untuk tombol yang dilarang.
Untuk testing, buat windows form seperti gambar berikut

Tambahkan kode event ‘KeyPress‘ di masing-masing textbox untuk memanggil class diatas.

Public Class Form1

    Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As KeyPressEventArgs) _
    Handles TextBox1.KeyPress
        e.Handled = FilteredTextbox.IntMode(e)
    End Sub

    Private Sub TextBox2_KeyPress(ByVal sender As System.Object, ByVal e As KeyPressEventArgs) _
    Handles TextBox2.KeyPress
        e.Handled = FilteredTextbox.DecimalMode(e)
    End Sub

    Private Sub TextBox3_KeyPress(ByVal sender As System.Object, ByVal e As KeyPressEventArgs) _
    Handles TextBox3.KeyPress
        e.Handled = FilteredTextbox.AlphaMode(e)
    End Sub
End Class

Dengan event ‘KeyPress’ dan kode ASCII, bisa diterapkan untuk membuat filter yang lain. Misalnya hanya huruf besar saja yang boleh, atau huruf kecil saja atau yang lainnya. Untuk kode ASCII selengkapnya bisa di lihat disini.

Semoga bermanfaat. Thanks buat mas BW atau petuah-petuahnya.

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 1 Februari 2011, in .NET, Desktop and tagged , , . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: