[Ask] Navigasi antar form

Forum diskusi pemrograman Visual C# .NET

[Ask] Navigasi antar form

Postby k4m4r82 » 04 Nov 2011, 23:15

Mau tidur tapi enggak ngantuk :D, jadi iseng2x buat program ini
Image
Image
Image
Sebagai alumni programer VB 6 8-} untuk membuat program diatas memang sangat gampang tapi beda dengan C#, akhirnya solusi yang sy coba menggunakan interface
Interface INavigator
Code: Select all
namespace Navigasi
{
    public interface INavigator
    {       
        void MovePrev(ref string data);
        void MoveNext(ref string data);       
    }
}

Form 1
Code: Select all
public partial class Form1 : Form, INavigator
{
   public Form1()
   {
      InitializeComponent();
   }

   private void Form1_Load(object sender, EventArgs e)
   {
      for (int i = 1; i < 11; i++)
         listBox1.Items.Add("Item #" + i);
   }
}

Untuk Form 1 saya mengimplementasikan interface INavigator, untuk kode implementasinya sbb :
Code: Select all
public void MovePrev(ref string data)
{
   btnPrev_Click(new object(), new EventArgs());
   data = listBox1.SelectedItem.ToString();
}

public void MoveNext(ref string data)
{
   btnNext_Click(new object(), new EventArgs());
   data = listBox1.SelectedItem.ToString();
}

Kode diatas hanya mengakses event Click btnPrev dan btnNext
Code: Select all
private void btnNext_Click(object sender, EventArgs e)
{
    if (listBox1.SelectedIndex < listBox1.Items.Count - 1) listBox1.SelectedIndex++;
}

private void btnPrev_Click(object sender, EventArgs e)
{
    if (listBox1.SelectedIndex > 0) listBox1.SelectedIndex--;
}

Sisa kode Form 1
Code: Select all
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    textBox1.Text = listBox1.SelectedItem.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();

    frm.Navigator = this;
    frm.ShowDialog();
}

Untuk kode Form 2, saya tambahkan sebuah property bertipe INavigator
Code: Select all
private INavigator _navigator;
public INavigator Navigator
{
    set { _navigator = value; }
}

Nilai property Navigator diset dari Form1 pada saat memanggil Form 2
Code: Select all
// cuplikan kode form 1
private void button1_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();

    frm.Navigator = this; // set property Navigator
    frm.ShowDialog();
}

Terakhir dari form 2 memanggil method MovePrev dan MoveNext interface INavigator
Code: Select all
private void btnNext_Click(object sender, EventArgs e)
{
    string data = string.Empty;

    if (this._navigator != null)
        this._navigator.MoveNext(ref data);

    textBox1.Text = data;
}

private void btnPrev_Click(object sender, EventArgs e)
{
    string data = string.Empty;

    if (this._navigator != null)
        this._navigator.MovePrev(ref data);

    textBox1.Text = data;
}

Sy rasa solusi ini kurang kren :D dan berbelit2x, mungkin ada solusi yang lebih baik ? [-O<

Download kode lengkap : http://www.4shared.com/file/i-W-WhTU/Navigasi.html
User avatar
k4m4r82
Java Moderator
Java Moderator
 
Posts: 1092
Joined: 14 Mar 2010, 12:40
Location: Utara Fak. Teknik UGM tepatnya di daerah Pogung
Memberi kopi: 33 cangkir
Mendapat kopi: 123 cangkir

Return to Visual C#

Who is online

Users browsing this forum: No registered users and 2 guests