11 Nisan 2012 Çarşamba

C# 'da Web Browser Kontrolü

Merhaba arkadaşlar. Bu makalemde "WebBrowser" kontrolünü nasıl daha etkili kullanılır, özelliklerini kullanarak inceleyeceğiz. Öncelikle formuma, "ToolBox" penceresinden "Menus & Toolbars" sekmesi altında bir adet "ToolStripContainer" atıyorum. Daha sonra yine aynı yerden "ToolStrip" atıroum. Bu bana daha dinamik bir yapı sağlayacaktır. Visual Studio 'da bu yapıyı görebiliriz. Bu dinamik yapıyı şu şekilde de sağlayabilirdik ; "ToolStrip" atıp, sağ tık, "Embed in ToolStripContainer" dedim. Yani "ToolStrip" kontrolünü, "ToolStripContainer" kontrolünün içine göm dedim. Daha sonra "ToolStripContainer" kontrolünün, "Smart Tag" 'inden "Dock Fill in Form" dedim. Ve böylece aynı dinamik görüntüyü sağladım. Böylece "ToolStrip" kontrolünü formun dört bir yanına sürükleyip kullanbiliriz.



ToolStrip kontrolüme artık kontrolerimi ekleyebilirim. Web Browser 'ımda kullanacağım ileri ve geri butonlarımı attım. Daha sonra adres çubuğu görevi görmesi için ComboBox kontrolümü attım. Burada biraz ToolStrip içerisindeki kontrollerden bahsetmek istiyorum. Kontrollerin isimleri örneğin attığım butonun ismi "toolStripButton1", ComboBox 'ın ismi ToolStripComboBox1'dır arkadaşlar. Görüldüğü üzere container' ın içinde bulunan kontroller, içinde bulunduğu container 'ın ismini,  kendi isimlerinin önüne, bir ön ek olarak almıştır. Diğer bir farklılık ComboBox kontrolünün uzunluğunu ve genişliğini mouse ile değiştiremiyorum. Ancak ya Properties penceresinden ya da Form yüklenirken kod ile değiştirebilirim.

Butonlarıma ister sağ tık, "set image" dan, ister properties penceresinde image özelliğinden ikon verebilirim.

ComboBox kontrolünün özellikleriyle oynayalım biraz. Textine "abount:blank" yazdım. AutoComplateMode = SuggestAppend, AutoComplateSource = AllUrl yazdım. Böylece adres çubuğuna adresi girerken piyasadaki diğer internet tarayıcılar gibi otomatik olarak tamamlamayı öneriyor. 

Daha sonra formun boş kısmına Web Browser kontrolümü attım. Otomatik olarak kendiliğinden bulunduğu container 'da dock özelliği gerçekleşti ve ToolSplitContainer 'ı kapladı.

Daha sonra projeme Menus&ToolBar sekmesinde StatusScrip attım. StatusScrip kontrolünden bir adet Label ve ProgressBar oluşturdum. Label 'ın spring özelliğini true yaparak içinde bulunduğu StatusScrip Container 'ını kaplamasını sağladım. Daha sonra StatusScripLabel'ıma anlık olarak, Timer1_Tick metodunda WebBrowser'ımın Statusunu yazdırdım. Daha sonra ise ProgressBar kontrolüne WebBrowser'ımın ProgressChanged Metodunda WebBrowser'ın Progress'ini atadım.

Daha sonra projeme ToolBox'ın Containers sekmesinden bir adet TabControl attım. DoubleClick metunda yeni sekme oluşturdum ve bu yeni sekmeyi TabControl'ün kontrollerine de ekledim.Yeni sekme oluştuğunda bir adet WebBrowser 'ın da oluşması gerekiyordu. Oluşturduğum WebBrowser'ı da yeni sekmenin kontrollerine ekledim.


        private void btnGeri_Click(object sender, EventArgs e)
        {
            webBrowser1.GoBack();
        }
        private void btnIleri_Click(object sender, EventArgs e)
        {
            webBrowser1.GoForward();
        }
        private void btnGit_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(cbAdres.Text);
        }
        private void btnEv_Click(object sender, EventArgs e)
        {
            webBrowser1.GoHome();
        }
        private void btnStop_Click(object sender, EventArgs e)
        {
            webBrowser1.Stop();
        }
        private void btnAra_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("https://www.google.com.tr/search?sourceid=chrome&ie=UTF-8&q=" + cbSearch.Text);
        }
        private void cbAdres_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control && e.KeyCode == Keys.Enter)
            {
                if (!cbAdres.Text.StartsWith("www.") && !cbAdres.Text.EndsWith(".com"))
                {
                    webBrowser1.Navigate("www." + cbAdres.Text + ".com");
                }
            }
            else if (e.KeyCode == Keys.Enter)
            {
                if (!cbAdres.Text.StartsWith("www.") && cbAdres.Text.EndsWith(".com"))
                {
                    webBrowser1.Navigate("www." + cbAdres.Text);
                }
                else
                {
                    webBrowser1.Navigate(cbAdres.Text);
                }
            }
        }
        private void btnKaynak_Click(object sender, EventArgs e)
        {
            MessageBox.Show(webBrowser1.DocumentText.ToString());
        }
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            cbAdres.Text = webBrowser1.Url.ToString();
            btnStop.Enabled = false;
            btnKaynak.Enabled = true;
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            toolStripStatusLabel1.Text = webBrowser1.StatusText;
        }
        private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
        {
            try
            {
                toolStripProgressBar1.Visible = true;
                toolStripProgressBar1.Maximum = Convert.ToInt32(e.MaximumProgress);
                toolStripProgressBar1.Value = Convert.ToInt32(e.CurrentProgress);
            }
            catch (Exception)
            {
                toolStripProgressBar1.Value = 0;
                toolStripProgressBar1.Visible = false;
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Navigate("www.google.com");
            timer1.Start();
        }
        private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            this.Text = tabControl1.TabPages[0].Text = webBrowser1.DocumentTitle.ToString();
            btnGit.Image = Image.FromFile(@"../../ikonlar/go.ico");
        }

        private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            btnStop.Enabled = true;
            btnKaynak.Enabled = false;
            btnGit.Image = Image.FromFile(@"../../ikonlar/refresh.ico");
        }

        private void tabControl1_DoubleClick(object sender, EventArgs e)
        {
            WebBrowser wb = new WebBrowser();
            wb.Dock = DockStyle.Fill;
            TabPage tp = new TabPage("YeniSekme");
            tabControl1.TabPages.Add(tp);
            tp.Controls.Add(wb);
            tabControl1.SelectedIndex = tabControl1.TabPages.Count - 1;
            cbAdres.Text = "abount:blank";
            wb.Navigated += new WebBrowserNavigatedEventHandler(wb_Navigated);
        }

        void wb_Navigated(object sender, WebBrowserNavigatedEventArgs e)
        {
            WebBrowser wb = sender as WebBrowser;
            tabControl1.TabPages[tabControl1.TabPages.Count - 1].Text = wb.DocumentTitle.ToString();
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            if (tabControl1.TabPages.Count != 0)
            {
                try
                {
                    if (tabControl1.SelectedTab != null)
                    {
                        tabControl1.TabPages.Remove(tabControl1.TabPages [tabControl1.SelectedIndex]);
                        tabControl1.SelectedIndex = tabControl1.TabPages.Count - 1;
                    }
                }
                catch (ArgumentNullException)
                {
                    MessageBox.Show("bir hata oluştu.");
                }
            }
        }


Hiç yorum yok:

Yorum Gönder