Rabu, 20 Oktober 2010

Mengakses Method Suatu Form dari Form lain

langsung saja, misalkan ada sebuah aplikasi dengan rancangan form seperti berikut ini:

Form1

image

Form2

image

pada rancangan di atas, Form1 bertindak sebagai sebuah MDIForm, sedangkan Form2 adalah Child Form dari Form1.

untuk agar Form2 sebagai Form Child dari Form1 bisa mengakses method yang disediakan di Form1, method dari Form1 tersebut harus dimarked sebagai public method. dan cara aksesnya dapat dilihat pada source code di bawah ini (C#).

Source Code Program.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Source Code Form1.cs

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        // method dengan access public pada Form1
        public string GetText()
        {
            return "Hello Get From Form1";
        }

        // method dengan access public pada Form1
        public void SetText(string s)
        {
            this.Text = s;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form = new Form2();
            form.MdiParent = this;
            form.Show();
        }
    }
}

Source Code Form2

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // mengakses method public dari Form1
            this.Text = (Form1.ActiveForm as Form1).GetText();
            (Form1.ActiveForm as Form1).SetText("Hello Form1 Set From Form2");
        }
    }
}

sedangkan untuk VB.NET, karena defaultnya semua form ada instance staticnya, untuk mengakses method pada Form1 dari Form2 dapat dilakukan dengan lebih mudah, yaitu dengan memanggil static instance defaultnya, seperti yang ditunjukkan pada potongan code di bawah ini

Potongan Code Form2

Me.Text = Form1.GetText()
Form1.SetText(“Hello Form1 Set From Form2”)

Ok, Semoga Bermanfaat

Rgds
Adi

Tidak ada komentar: