Web Browser
ဟိုဘက်က ADO.NET ဘက် လှည့်လိုက်တာ ဒီဘက်မှာ နဲနဲ ပြတ်သွားတယ်.. ဒါကြောင့် ဒီတစ်ခါ နဲနဲ အထူးအဆန်းလေး ပြမယ်.. သိတဲ့သူတွေကတော့ ငြိမ်ငြိမ်နေပေါ့ဗျာ.. မသိတဲ့သူတွေကို မျက်လှည့်ပြလိုက်အုံးမယ်.. 😀 ဒီတစ်ခါ ခေါင်းလဲ သိပ်မစားမဲ့ မထင်ထားတဲ့ အရာတစ်ခု ပြပါမယ်။ အဲဒါက web browser တစ်ခုကို ဘယ်လို ဆွဲမယ်ဆိုတာပါပဲ။ web browser ကို တကယ်ဆွဲဖို ့ကတော့ ခေါင်းစားမှာပါ.. ဒါပေမဲ့ အခုက ဘယ်လိုလုပ်လို ့ရနိုင်မလဲ ဒါတွေက ဒီလိုပါလား ဆိုတဲ့ sense လေးကို သိဖို ့ အတွက်တော့ ခေါင်းသိပ်မစားဘူး လို ့ဆိုလိုတာပါ…
Namespace: System.Windows.Forms
web browser ဆိုတာ web pages တွေ display and host ပေ့ါဗျာ.. သူ ့မှာ အခြား controls တွေလိုပဲ methods တွေ၊ properties တွေ၊ events တွေ များစွာ ရှိပါတယ်။ သူရဲ ့လက်တွေ ့အသုံးဝင်တဲ့ methods အချို ့ကို အောက်မှာ ရေးပြပါမယ်။
- Url
- Navigate
- GoForward
- GoBack
- Stop
- Refresh
- GoHome
- GoSearch
- Print
ကဲ Sample တစ်ခုလောက် ကြည့်ရအောင်။
using System;
using System.Drawing;
using System.Windows.Forms;
public class MainClass
{
[STAThread]
public static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.Run(new MyWebBrowser());
}
}
public class MyWebBrowser : Form
{
public MyWebBrowser()
{
InitializeComponent();
webBrowser.Navigate(“http://www.myanmarfamily.org”);
}
private WebBrowser webBrowser;
private Label lblAddress;
private TextBox AddressBox;
private Button goButton;
private Button forwardButton;
private Button backwardButton;
private void InitializeComponent()
{
this.webBrowser = new WebBrowser();
this.lblAddress = new Label();
this.AddressBox = new TextBox();
this.goButton = new Button();
this.forwardButton = new Button();
this.backwardButton = new Button();
// webBrowser
webBrowser.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom) | AnchorStyles.Left) | AnchorStyles.Right)));
webBrowser.Location = new Point(16, 42);
webBrowser.Size = new Size(917, 524);
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
// lblAddress
lblAddress.AutoSize = true;
lblAddress.Location = new Point(15, 11);
lblAddress.Size = new Size(60, 17);
lblAddress.Text = “Address”;
// AddressBox
AddressBox.Anchor = ((AnchorStyles)(((AnchorStyles.Top | AnchorStyles.Left) | AnchorStyles.Right)));
AddressBox.Location = new Point(77, 7);
AddressBox.Size = new Size(500, 22);
AddressBox.TabIndex = 0;
// goButton
goButton.Anchor = ((AnchorStyles)((AnchorStyles.Top | AnchorStyles.Right)));
goButton.Location = new Point(587, 5);
goButton.Size = new Size(100, 28);
goButton.TabIndex = 1;
goButton.Text = “Go”;
goButton.Click += new EventHandler(goButton_Click);
// forwardButton
forwardButton.Anchor = ((AnchorStyles)((AnchorStyles.Top | AnchorStyles.Right)));
forwardButton.Enabled = false;
forwardButton.Location = new Point(807, 5);
forwardButton.Size = new Size(100, 28);
forwardButton.Text = “Forward >>”;
forwardButton.Click += new EventHandler(forwardButton_Click);
// backButton
backwardButton.Anchor = ((AnchorStyles)((AnchorStyles.Top | AnchorStyles.Right)));
backwardButton.Enabled = false;
backwardButton.Location = new Point(697, 5);
backwardButton.Size = new Size(100, 28);
backwardButton.Text = “<< Back”;
backwardButton.Click += new EventHandler(backwardButton_Click);
// Form
this.ClientSize = new Size(949, 581);
this.Controls.Add(goButton);
this.Controls.Add(AddressBox);
this.Controls.Add(lblAddress);
this.Controls.Add(webBrowser);
this.Controls.Add(forwardButton);
this.Controls.Add(backwardButton);
this.Text = “GreenLeaf’s WebBrowser”;
}
private void goButton_Click(object sender, EventArgs e){
webBrowser.Navigate(AddressBox.Text);
}
private void forwardButton_Click(object sender, EventArgs e){
webBrowser.GoForward();
}
private void backwardButton_Click(object sender, EventArgs e){
webBrowser.GoBack();
}
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
AddressBox.Text = webBrowser.Url.ToString();
if (webBrowser.CanGoBack)
{ backwardButton.Enabled = true; }
else
{ backwardButton.Enabled = false; }
if (webBrowser.CanGoForward)
{ forwardButton.Enabled = true; }
else
{ forwardButton.Enabled = false; }
}
}
Output
Figure1_1 နဲ ့ Figure1_2 နဲ ့ Figure1_3 မှာ တစ်ချက် ကြည့်ကြည့်..
Figure1_1
Figure1_2
Figure1_3
This is pretty cool .. huh ??
How To Works
ဆိုတော့ code ကို လေ့လာကြည့်ရအောင်.. ထုံးစံအတိုင်း InitializeComponent() ထဲမှာ Form နဲ ့ Controls တွေရဲ ့ properties တွေ ရေးမှာပေါ့ဗျာ.. ဒီ properties တွေက အရင် post တွေမှာ ရှင်းပြပြီးသား ဖြစ်ပါတယ်။ ဒါပေမဲ့ နဲနဲ စွဲသွားအောင် တချို ့တလေ အရေးကြီးတာလေးတွေ ပြန်ပြောပြမယ်။ ဥပမာ
webBrowser.Anchor = ();
အဲဒီ့မှာ Anchor ဆိုတဲ့ property က ကျနော်တို ့form ကို resize ပေါ့လေ mouse နဲ ့ ချံု၊ ချဲ ့လုပ်တဲ့အခါ form ထဲက control တွေပါ resize အတိုင်း အကြီးအသေးပါနိုင်အောင် သူ ့ကို အသုံးပြုရပါတယ်။ Location ဆိုတာကတော့ controls တွေကို နေရာချထားမှုပေါ့ဗျာ.. (x,y) coordinate ကို အသုံးပြုပါတယ်။ သချင်္ာက (x,y) coordinate မဟုတ်ပါဘူး.. Display screen ကို programming မှာ ကိုယ့်ဘာသာ သတ်မှတ်ထားတဲ့ unit နဲ ့ပါ။ Display Screen (e.g., LCD) ရဲ ့ အပေါ်ဘယ်ထောင့်က (x,y) coordinate (0,0) ဖြစ်ပါတယ်။ x coordinate က ညာဘက်ကို အပေါင်း ကိန်းပြည့်တန်ဖိုး တိုးသွားပြီးတော့ y coordinate က အောက်ဘက်ကို အပေါင်းကိန်းပြည့် တန်ဖိုး တိုးသွားပါတယ်။ ကျန်တဲ့ property တွေကတော့ ပြောစရာမလိုတော့ဘူးထင်တာပဲ..
goButton.Click += new EventHandler(goButton_Click);
private void goButton_Click(object sender, EventArgs e)
{
webBrowser.Navigate(AddressBox.Text);
}
Navigate() method ကို အသုံးပြုသွားတယ်ဆိုရုံပါပဲ။ ဘာမှကို မပါလို ့ ဘာမှကို ရှင်းပြစရာ မလိုဘူး ထင်ပါတယ်။ သူ ့အတိုင်းကို ရှင်းနေပြီလေ။ ထပ်ရှင်းလိုက်ရင် တော်ကြာ …. အဲ သူ ့မှာ AddressBox.Text ဆိုတာက ကျနော်တို ့ အပေါ်က ရိုက်လို ့ရတဲ့ TextBox (ရိုက်လို ့ရတာဆိုလို ့ သူ တစ်ခုတည်းရှိပါတယ်) ထဲမှာ ကျနော်တို ့ရိုက်သမျှ Url ကို WebBrowser Class ရဲ ့ Navigate() method အကူအညီနဲ ့ display လုပ်ပေးပါလိမ့်မယ်။
private void forwardButton_Click(object sender, EventArgs e)
{
webBrowser.GoForward();
}
private void backwardButton_Click(object sender, EventArgs e)
{
webBrowser.GoBack();
}
ဒီနှစ်ခုကတော့ မပြောတော့ဘူးဗျာ.. မြင်တဲ့အတိုင်းပဲလေ..
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
AddressBox.Text = webBrowser.Url.ToString();
if (webBrowser.CanGoBack)
{
backwardButton.Enabled = true;
}
else
{
backwardButton.Enabled = false;
}
if (webBrowser.CanGoForward)
{
forwardButton.Enabled = true;
}
else
{
forwardButton.Enabled = false;
}
}
ဒီကောင်လေးကလဲ သိပ်ပြောစရာတော့ မရှိပါဘူး… ကျနော်တို ့ forwardButton, backButton ရဲ ့ property မှာ
forwardButton.Enabled = false;
ဆိုပြီး ပေးခဲ့တယ်။ သဘောက ပထမဆုံး Browser ဖွင့်လိုက်တဲ့အချိန်မှာ Home Page တက်လာမယ်။ အဲအချိ်န်မှာ အရင် page တွေ၊ နောက် page တွေ မရှိသေးဘူးလေ။ ဟုတ်တယ်မို ့လား.. ဒါကြောင့် ဒီ button နှစ်ခုကို ပထမမှာ disable ပေးထားမယ်။ နောက် home page ကနေမှ တခြား page တစ်ခုကို သွားပြီဆိုတော့မှ ဒီနှစ်ကောင်ကို enable ပေးလိုက်မယ်။ ဒီ method မှာ ရေးထားတာ အဲဒါပါပဲ..
Home page ကို
public MyWebBrowser()
{
InitializeComponent();
webBrowser.Navigate(“http://www.myanmarfamily.org”);
}
ဒီ MyWebBrowser class constructor မှာ တစ်ခါတည်း ပေးထားလိုက်ရင် ရပါတယ်။
Remark
အပေါ်မှာ အသုံးဝင်တဲ့ method လေးတွေ ပြောခဲ့ပါတယ်။ ဒါပေမဲ့ code ထဲမှာ ယူသုံးသွားတာက Url, GoBack, GoForward လောက်ပဲ သုံးထားပါတယ်။ ဒါကြောင့် ကျန်တဲ့ GoHome တို ့၊ GoSearch တို ့၊ Refresh တို ့ကို ခင်ဗျားစမ်းဖို ့အတွက် ချန်ထားခဲ့ပါတယ်။…
Ok, Happy Coding!!
Thanks for reading!!
See u around, buddy!!