Rabu, 01 September 2010

TabControl di VB.Net 2005

Sebagai komponen yang bersifat container, TabControl sangat membantu sekali dalam mendesain tampilan pada form windows, dengan menggunakan TabControl informasi yang banyak pada suatu windows aplikasi dapat dikelompokan menurut fungsinya masing-masing, sehingga hal ini akan lebih memudahkan user dalam menggunakan aplikasi.

Namun TabControl di VB.net 2005 mempunyai satu kelemahan, misalnya jika di dalam aplikasi anda terdapat TabControl dengan beberapa TabPage, katakanlah TabPage1 dan TabPage2, kemudian yang anda inginkan adalah sebelum user menyelesaikan semua entryan yang terdapat di TabPage1 maka user tersebut tidak boleh pindah ke TabPages2. untuk masalah seperti ini mungkin anda akan langsung berpikir, "kalo gitu TabPage2-nya di-disable saja dulu, ketika semua entryan yg diperlukan di TabPage1 telah ter-isi semua maka TabPage2 di-enable". Di sinilah permasalahannya, TabControl di VB.Net 2005 tidak menyediakan fasilitas tersebut(Enable/Disable Page).

Begitu juga dengan method Hide dan Show yang ada di TabControl tidak bisa digunakan untuk mengatasi masalah ini. lalu kemudian ada yang mencoba memberi solusi dengan method Add dan Remove Tab, saya pikir ini bukan solusi karena dengan method tersebut berarti kita harus merekonstruksi ulang TabPage yang kita Remove, saat kita ingin menampilkannya kembali.

Walhasil bagi saya, solusi yang paling memungkinkan adalah dengan memanfaatkan Property  TabControl.SelectedIndex yang diletakan di Event TabControl.Selected. Dengan cara ini ketika user meng-klik TabPage2, lakukan proses Checking apakah semua entryan yang wajib diisi di TabPage1 sudah terisi semua atau belum, jika belum maka arahkan property TabControl.SelectTab ke TabPage1. kodenya sebagaimana yang terdapat di bawah ini.


Public Class Form1
    Private Function CekEntryanTabPage1() As Boolean
        If TextBox1.Text = String.Empty Then
            Return False
        End If
        Return True
    End Function
    Private Sub TabControl1_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControl1.Selected
        If TabControl1.SelectedIndex = 1 Then
            If CekEntryanTabPage1() = False Then
                MessageBox.Show("Isian di tab page 1 belum lengkap", "pesan", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                TabControl1.SelectTab(0)
            End If
        End If
    End Sub
End Class

Demikian, semoga membantu dan bermanfaat.

1 komentar:

Joss Gandoss mengatakan...

thanks gan sangat membantu