Makale Özeti

Yazılım geliştirici bazı durumlarda mobil cihaz üzerinde o anda çalışmakta olan uygulama kapatılmadan uygulamayı kullanan şahsa internet browser’ı üzerinden birşeyler göstermek isteyebilir.Ya da yazılım geliştiricimiz kendi internet browser’ini yazmakda isteyebilir.İşte bu noktada Microsoft yazılım geliştiricilerin sesini duymuş olmalı ki .NET 2.0 la birlikte WebBrowser kontrolünü biz yazılım geliştiricilerin hizmetine sundu..

Makale

Mobil Uygulamalarda CF 2.0 ile gelen WebBrowser Kontrolü

 

            Bildiğiniz gibi Windows ailesi ürün segmentini (windows mobile 2002,2003,5.0..) barındıran tüm mobil cihazların hepsinde internet explorer aracı sistemle birlikte gelmektedir.Hazır konu açılmışken değinelim, en son sürüm olan windows mobile 5.0 içerisinde yer alan Internet Explorer web tarayıcısı için artık tam ekran görünümü için destek var. Bu şekilde bir görünümde başlık çubuğu ve ekrandaki tuşlar saklı kalıyor. Bu konuyla ilgili ayrıntılı bilgiler Internet Explorer Mobile Browser Reference sayfalarında bulunabilir.

            Yazılım geliştirici bazı durumlarda mobil cihaz üzerinde o anda çalışmakta olan uygulama kapatılmadan uygulamayı kullanan şahsa internet browser’ı üzerinden birşeyler göstermek isteyebilir.Ya da yazılım geliştiricimiz kendi internet browser’ini yazmakda isteyebilir.İşte bu noktada Microsoft yazılım geliştiricilerin sesini duymuş olmalı ki .NET 2.0 la birlikte WebBrowser kontrolünü biz yazılım geliştiricilerin hizmetine sundu..

                                                          

            Aşağıdaki resme benzer bir form tasarlıyoruz öncelikle..Bu arada belirtmem de fayda var ki biz webbrowser kontrolünü şimdilik hazır olarak uygulamamız da kullanıyoruz fakat unutulmamalıdır ki URL bilgisini yazacağımız textbox benzeri bir nesne (ilgili sayfayı çağırmak için) , sayfalar arasında dolaşmak içinde navigasyon butonları gibi her seferinde ihtiyac duyacağımız bazı ek kontroller olacaktır..Geliştirdiğimiz uygulamalarda webbrowser kontrölüne sık sık ihtiyac duyuyorsak şayet bunu bir user control içerisinde yukarıda adını saydığım kontrollerle birlikte ayrı bir  bileşen olarak tasarlamamız kesinlikle daha mantıklı bir çözüm olacaktır…

                                                          

            İsterseniz lafı çok uzatmadan herzaman yaptığımız gibi hemen kodlara geçelim..Kod’un içerisinde neler yaptığımızı ufak ufak açıklamaya çalıştım..

 

        public void getPage(string Url)

        {

            if (Url.Length==0)

                return; // Eğer URL bilgisi boşsa çık.

            if (Url.Equals("about:blank"))

                return; //Eğer URL bilgisi boşsa çık.

            if (!Url.StartsWith("http://"))  //http:// ile başladığını garantiliyoruz..

            {

                Url = "http://"+Url; // değilse ekliyoruz.

            }

            try

            {

                wbMain.Navigate(new Uri(Url)); // Uri tipinden parametremizi geçiyoruz..

            } catch (System.UriFormatException myEx)

            {

                MessageBox.Show("Oluşan URL hatası : "+myEx.Message); // hata olursa kullanıcıyı bilgilendiriyoruz..

            }

        }

 

        private void frmMain_Load(object sender,EventArgs e)

        {

            wbMain.Navigated+=new WebBrowserNavigatedEventHandler(wbMain_Navigated); //Açılan sayfa üzerinden herhangi bir link'i tıklarsa

                                                                                     //kullanıcı tıkladığı linke ait URL bilgisi adres kısmına yazılıyor..

            txtUrl.Text = "www.eralperat.com"//açılış sayfamız..

            getPage(txtUrl.Text); //sayfayı çağırıyoruz..

            txtUrl.Focus();

        }

 

        void wbMain_Navigated(object sender,WebBrowserNavigatedEventArgs e)

        {

            txtUrl.Text = wbMain.Url.ToString(); // tıklanan link bilgisi alındı!

            lblInfo.Text = txtUrl.Text;

        }

 

        private void txtUrl_KeyPress(object sender,KeyPressEventArgs e)

        {

            if (e.KeyChar==(char)13)  //enter a basılırsa ilgili adresdeki sayfa çağrılıyor..

            {

                lblInfo.Text = string.Empty;

                getPage(txtUrl.Text);

                txtUrl.Select(txtUrl.Text.Length+1,0);

            }

        }

 

        private void pbxBack_Click(object sender,EventArgs e)

        {

            if (wbMain.CanGoBack)  // daha onceden ziyaret edilen birönceki sayfa Varsa! yükleniyor..

                wbMain.GoBack();

            //not olarak burda 1-2 şey belirtmek istiyorum.. Denetimsiz kod ciddi anlamda baş ağrıtır..Yazdığımız uygulamalar

            //gün geçtikce gelen müşteri istekleri veya analizlerde ki komplekslik nedeniyle fonksiyonellik anlamında

            //zenginleşirler.Burda dikkat çekmek istediğim ki en çok yapılan hatalardan biridir eğer ilgili nesneye ait cağırdığımız metodun

            //Can.... şeklinde başlayan bir bool değer donduren property'si varsa onun kontrol edilmesi gerektiğidir..Yoksa basit ama uygulamalanın

            //sağlıklı çalışmasını sakatlayan bir durumdan ötürü müşteriden gelen feedbackler gereksiz yere fix listinizin kabarmasına sebep olacaktır...

        }

 

        private void pbxFwd_Click(object sender,EventArgs e)

        {

            if (wbMain.CanGoForward)

                wbMain.GoForward();

        }

 

        private void pbxRefresh_Click(object sender,EventArgs e)

        {

            wbMain.Refresh();

        }

 

        private void pbxStop_Click(object sender,EventArgs e)

        {

            wbMain.Stop();

        }

Gördüğünüz gibi webbrowser nesnesinin oldukça kullanışlı fakat bir o kadar da basit bir yapısı var..Uygulamamızı emülatörde çalıştırdığımızda gerekli internet ayarlarını yaptıktan sonra aşağıdaki gibi bir görüntü elde ederiz..

                                                          

 

Bir sonraki makalemizde Notification kontrölü’nü inceleyerek mobil uygulamalarımızı nasıl daha interaktif bir yapıya büründürebileceğimizi irdeleyeceğiz..

 

Şimdilik bu kadar..Takıldığınız bir nokta olursa eralp.erat@savyazilim.com adresinden bana ulaşabilirsiniz.

Unutmayalım bilgi paylaşıldıkca değerlidir..

 

  • Kodları İndirmek İçin Tıklayınız...
  •  

    Eralp Erat

    Mcp, Mcad.NET , Mcsd.NET

    HIMS

    www.eralperat.com

     

     

               

     

     

    Uygulama Kodlarını İndirmek İçin