Misalnya saya memiliki 3 buah form. Form pertama
adalah form utama, sebut saja frmMain. 2 form lain adalah form anak, misnya
bernama frmAnak1, frmAnak2. Coding utk frmAnak1 dgn frmAnak2 tetap di form
masing2. Tampilan halaman pada frmAnak1 akan terlihat di frmMain (form utama).
Pada frmUtama dapat melihat tampilan form anak frmAnak1 dan frmAnak2, nah jadi
seolah2 seperti bentuk web dimaan frmMain adalah Master.Pages-nya, form laen
adalah anak2nya.
Saya akan beritahu caranya, pada form utama dipasang
sebuah panel misalkan bernama panel1. Jadi begitu ada suatu perintah, maka form
anak akan terlihat pada panel tersebut. Event pada form anak pertama juga dapat
memanggil form kedua (atau form lainnya) dan form laennya akan tampil pada
panel itu juga.
Pada tiap-tiap form anak, tambahkan field tersebut
dibawah:
private Panel _mainPanel;
Kemudian tambahkan setter method untuk field
tersebut
public void setPanel(Panel pnl)
{
this._mainPanel = pnl;
}
Untuk
konstruktornya tambahkan overloading method seperti ini,
public frmAnak1(Panel mainPanel)
{
InitializeComponent();
_mainPanel = mainPanel;
}
Lalu
ini adalah method untuk memanggil frmAnak2 dari frmAnak1, misalkan suatu tombol
ditekan akan memanggil method ini.
private void closeFormAndBackToForm2()
{
if (_mainPanel != null)
{
frmAnak2 f = new
frmAnak2(_mainPanel);
f.TopLevel = false;
f.Dock = DockStyle.Fill;
_mainPanel.Controls.Clear();
_mainPanel.Controls.Add(f);
f.Show();
}
}
Lalu
property pada form itu sendiri harus disetting khusus, klik pada badan utama
form. Lihat bagian property. AutoScroll=True, FormBorderStyle=None.
Nah
kemudian dari form induk (frmUtama) kita dapat panggil form mana yg akan diload
ke panel-nya, misalnya frmAnak1 akan dipanggil duluan ke panel pada saat
form_Load atau ditekannya suatu tombol.
private void openfrmAnak1()
{
frmAnak1 f = new frmAnak1();
f.setPanel(panel1);
f.TopLevel = false;
f.Dock = DockStyle.Fill;
this.panel1.Controls.Clear();
this.panel1.Controls.Add(f);
f.Show();
}
private void openfrmAnak2()
{
frmAnak2 f = new frmAnak2();
f.setPanel(panel1);
f.TopLevel = false;
f.Dock = DockStyle.Fill;
this.panel1.Controls.Clear();
this.panel1.Controls.Add(f);
f.Show();
}
Pada
form utama bisa saja terdapat sejumlah panel khusus untuk membuka form lain.
Panel itu di web menjadi seperti frame, jadi ada suatu event khusus akan
membuka form lain di dalam frame itu. Contoh form diatas itu hanya 2 form, bisa
saja lebih dari 2 form bahkan puluhan form dapat bertukar tempat dengan form
yang lain dengan menyebutkan nama form untuk dibuat konstruktornya, setelah itu
mengeset panel dengan nama panel di form utama.
Tidak ada komentar:
Posting Komentar