Minggu, 10 Oktober 2010

Mengakses Method Form MDI dari Form Lain

Pada VB.NET, untuk mengakses kontrol atau method yang ada disebuah form lain, dapat dilakukan dengan mudah, karena sudah disediakannya static class dari tiap form yang bersangkutan. namun, hal ini tidak kita jumpai ketika kita bekerja dengan memanfaatkan bahasa C#. namun hal ini bukan berarti kita tidak bisa mengakses kontrol atau method dari form lain ketika bekerja dengan bahasa C#, tapi  dengan sedikit usaha, kontrol atau method tersebut tetap bisa kita akses jg dengan menggunakan bahasa C#. berikut ini contohnya:

image

image

Form1 adalah sebuah MDI Form, memiliki MenuStrip yang digunakan untuk memanggil object dari Form2. serta memiliki StatusStrip dengan kontrol ProgressBar di dalamnya. serta sebuah kontrol Timer.

image

Form2 adalah form yang akan difungsikan sebagai child form bagi Form1.

berikut ini code dari Form1:

using System;
using System.Windows.Forms;

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

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

        int min, max;

        // method dgn akses public agar bisa dipanggil dari luar
        public void RunProgressStatusBar(int min, int max)
        {
            this.min = min;
            this.max = max;
            this.timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (min <= max)
            {
                this.lblAngka.Text = min.ToString();
                this.pBar.Value = min++;
            }
            else
                this.timer1.Stop();
        }
    }
}

 

dan, berikut ini code dari 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)
        {
            int min = Convert.ToInt32(this.textBox1.Text);
            int max = Convert.ToInt32(this.textBox2.Text);
            // memanggil method RunProgressStatusBar kepunyaan MDI dari Child Form
            (Form1.ActiveForm as Form1).RunProgressStatusBar(min, max);
        }
    }
}

Rgds
Adi

Tidak ada komentar: