Як отримати значок веб-сайту

Автор работы: Пользователь скрыл имя, 26 Апреля 2013 в 17:43, контрольная работа

Описание работы

У цій роботі описується, як створити і реалізувати деякі з особливостей додатку Web Browser, запам'ятовувати Вибрані веб-вузли і використовувати Links Bar, зберігати Історію відвіданих сторінок, пошук в Google або Live Search, зберігати настроювальні параметри, проглядання джерела і властивостей веб-вузла, друк вмісту сторінки, і інші можливості. C# має WebBrowser control, який робить всю роботу з передачі веб-сторінок.

Содержание работы

Вступ 3
Як отримати значок веб-сайту 4
Панель посилань (Links Bar) 4
Історія і Вибране 6
Перегляд джерела 8
Пошук 9
Збереження настроювальних Параметрів 9
Властивості, Друк, Попередній Перегляд, Установки Сторінки, Зберегти Як 11
Вирізати, Копіювати, Вставити, Виділити Все 12
Список літератури 32

Файлы: 1 файл

Web-браузер.doc

— 355.50 Кб (Скачать файл)

 

 

 

 

 

 

 

 

Зміст

 

 

 

 

 

 

 

 

 

 

 

Вступ

 

У цій роботі описується, як створити і реалізувати деякі з особливостей додатку Web Browser,  запам'ятовувати Вибрані веб-вузли і використовувати Links Bar, зберігати Історію відвіданих сторінок, пошук в Google або Live Search, зберігати настроювальні параметри, проглядання джерела і властивостей веб-вузла, друк вмісту сторінки, і інші можливості. C# має WebBrowser control, який робить всю роботу з передачі веб-сторінок.

 

Використання таблиці функціональності

 

У головній формі  додано TabControl управління з ім'ям browserTabControl з тільки одним TabPage, який создает "New" таблицю. Коли користувач клацає "New" таблиця, створюється нова таблиця. Метод addNewTab()показує, як додати нову таблицю у ваш веб-браузер.

 

private void addNewTab()

{

    // create a new TabPage object

    TabPage tpage = new TabPage();

    tpage.BorderStyle = BorderStyle.Fixed3D;

    //add the newly created TabPage

    //to the tabcontrol's collection of tab pages

    browserTabControl.TabPages.Insert(

        browserTabControl.TabCount - 1, tpage);

    //create a WebBrowser object

    WebBrowser browser = new WebBrowser();

    browser.Navigate(homePage);

    //add the browser object to the tab page

    //you created previously

    tpage.Controls.Add(browser);

    browser.Dock = DockStyle.Fill;

    browserTabControl.SelectTab(tpage);

    //add some event handlers to your browser object

    browser.ProgressChanged += new

      WebBrowserProgressChangedEventHandler(Form1_ProgressChanged);

    browser.DocumentCompleted += new

      WebBrowserDocumentCompletedEventHandler(Form1_DocumentCompleted);

    browser.Navigating +=

      new WebBrowserNavigatingEventHandler(Form1_Navigating);

    browser.CanGoBackChanged +=

      new EventHandler(browser_CanGoBackChanged);

    browser.CanGoForwardChanged +=

      new EventHandler(browser_CanGoForwardChanged);

}

 

У прикладі нижче  показано, як отримати поточну таблицю:

 

private WebBrowser getCurrentBrowser()

{

    return (WebBrowser)browserTabControl.SelectedTab.Controls[0];

}

Як отримати значок веб-сайту

Значок - це квадратна  ікона розміром 16X16, 32X32 або 64X64 пікселі, пов'язана з веб-сайтом. Цей значок називається favicon.ico, і може бути знайдений в кореневому каталозі веб-сайту. Для того, щоб отримати значок певного веб-сайту, потрібно зробити запит на http://websitename/favicon.ico. Можна отримати ікону з потоку відповіді і використовувати його в додатку. Для веб-сайтів, які не мають значка,  іспользуєтя значок за умовчанням.

 

public static Image favicon(String u, string file)

{

    Uri url = new Uri(u);

    String iconurl = "http://" + url.Host + "/favicon.ico";

 

    WebRequest request = WebRequest.Create(iconurl);

    try

    {

        WebResponse response = request.GetResponse();

 

        Stream s = response.GetResponseStream();

        return Image.FromStream(s);

    }

    catch (Exception ex)

    {

        //return a default icon in case

        //the web site doesn`t have a favicon

        return Image.FromFile(file);

    }

}

Панель посилань (Links Bar)

Для панелі посилань (Links Bar) используется элемент ToolStrip. Кнопки посилання представлені в ToolStripButton із зображенням значка і назвою веб-сайту у вигляді тексту на кнопці. Посилання зберігаються в XML-файле, який виглядає таким чином:

 

<favorits>

  <link url="http://www.google.ro/" >Google/<link>

  <link url="http://www.codeproject.com/">CodeProject</link>

  <link url="http://www.youtube.com/edu">Youtube/Edu</link>

</favorits>

 

Метод addNewLink()показує, як додати нове посилання. Спочатку потрібно відкрити XML-файл, що містить посилання, потім додати новий XmlElement, встановлюючий атрибут з URL- адресою веб-сайту і внутрішній тексту цього елементу з ім'ям посилання, яке ми хоч відобразити на панелі посилань. Потім додамо ToolStripButton на панель посилань. Елемент ToolStripButton має конструктор, який приймає чотири аргументи: public ToolStripButton (string text, Image image, EventHandler onClick, string name).

 

private void addLink(String url, string name)

{  

   //open the xml file

    XmlDocument myXml = new XmlDocument();

   //and a new element to the xml file

    XmlElement el = myXml.CreateElement("link");

    el.SetAttribute("url", url);

    el.InnerText = name;

 

    if (!File.Exists(linksXml))

    {

        XmlElement root = myXml.CreateElement("links");

        myXml.AppendChild(root);

        root.AppendChild(el);

    }

    else

    {

        myXml.Load(linksXml);

        myXml.DocumentElement.AppendChild(el);

    }

    //if the links bar is visible then

    //you have to add a ToolStripButton

    if (linkBar.Visible == true)

    {

       //create a new ToolStripButton object with the favicon image,

       //website name the click eventhandler to

       //navigate to the specific web site              

       ToolStripButton b =

                  new ToolStripButton(el.InnerText, getFavicon(url),

                  items_Click, el.GetAttribute("url"));

        b.ToolTipText = el.GetAttribute("url");

        //the MouseUp event is used

        //for showing the context menu of this button

        b.MouseUp += new MouseEventHandler(b_MouseUp);

        linkBar.Items.Add(b);

    }

 

    myXml.Save(linksXml);

}

 

Елемент ToolStripButton не має компоненту ContextMenu, тому якщо ми хоч додати контекстне меню, вам потрібно застосувати деякі прийоми. Це один з варіантів реалізації даного методу. У панелі designer view додаємо елемент ContextMenu з ім'ям linkContextMenu і додаємо деякі елементи в цьому контекстному меню. При клацанні правої кнопки мишки по посиланню, це контекстне меню відображатиметься в положенні курсора миші . Потім зберігаємо адресу веб-вузла і ім'я цього посилання (кнопка, яка послала цю подію). Для збереження останньої адреси і імені використовуються дві змінні: adress і name. Так, коли користувач клацає пункт контекстного меню, ми можемо використовувати ці змінні.

 

 

string adress, name;

 

private void b_MouseUp(object sender, MouseEventArgs e)

{

    ToolStripButton b = (ToolStripButton)sender;

    adress = b.ToolTipText;

    name = b.Text;

 

    if (e.Button == MouseButtons.Right)

        linkContextMenu.Show(MousePosition);

}

 

Кожен пункт  контекстного меню має програму обробки  події клацання. Нижче приведений приклад відкриття зв'язку в новому вікні:

 

private void openInNewWindowToolStripMenuItem_Click(object sender, EventArgs e)

{

    WBrowser new_form = new WBrowser();

    new_form.Show();

    new_form.getCurrentBrowser().Navigate(adress);

}

Історія і Вибране

Для зберігання Історії і Вибраного використовуються два файли XML:

history.xml

 

<history>

  <item url="http://www.codeproject.com/"

    lastVisited="19.02.2010 12:58:03" times="6" />

  <item url="http://www.google.ro/"

    lastVisited="19.02.2010 12:52:09" times="2" />

  <item url="http://msdn.microsoft.com/"

    lastVisited="13.08.2009 20:22:52" times="1" />

</history>

 

favorites.xml

 

<favorites>

   <favorit url="http://images.google.ro/imghp?hl=ro&tab=wi">

       Google-images</favorit>

   <favorit url="http://www.yahoo.com/">Yahoo!</favorit>

</favorites>

 

Для показу Історії  і Вибраного  використовується елемент Treeview. Нижче показаний приклад показу історії, заснованій на імені сайту:

 

private void showHistory()

{

    historyTreeView.Nodes.Clear();

    //open the xml file

    XmlDocument myXml = new XmlDocument();

 

    if (File.Exists(historyXml))

    {

        myXml.Load(historyXml);

        DateTime now=DateTime.Now;

       

        //....

       

        if (comboBox1.Text.Equals("View By Site"))

        {

          historyTreeView.ShowRootLines = true;

          foreach(XmlElement el in myXml.DocumentElement.ChildNodes)

          {

              Uri site=new Uri(el.GetAttribute("url"));

 

              if(!historyTreeView.Nodes.ContainsKey(site.Host.ToString()))

                  historyTreeView.Nodes.Add(site.Host.ToString(),

                                            site.Host.ToString(),0,0);

              //create a new tree node

              TreeNode node =new TreeNode(el.GetAttribute("url"), 3, 3);

              //set some properties of the new tree node you created   

              node.ToolTipText = el.GetAttribute("url") +

                               "\nLast Visited: " +

                               el.GetAttribute("lastVisited") +

                               "\nTimes Visited: " +

                               el.GetAttribute("times");

              node.Name = el.GetAttribute("url");

              //add a context menu to this node

              node.ContextMenuStrip = histContextMenu;

              //add this node to the treeview control   

              historyTreeView.Nodes[site.Host.ToString()].Nodes.Add(node);

         }

         //....

    }

 

Для додавання  веб-вузла до Вибраних використовується форма з ім'ям AddFovorites яка відображатиметься як діалог. Конструктор цього класу бере аргумент рядка, що представляє поточну мережеву адресу. Коли користувач клацає кнопку "Add to favorites", з'явиться діалог AddFavorites. Користувач може вибрати, додати вибраного або посилання.

 

 

private void toolStripButton8_Click(object sender, EventArgs e)

{

    if (getCurrentBrowser().Url != null)

    {        //show the AddFavorites dialog

        AddFavorites dlg =

           new AddFavorites(getCurrentBrowser().Url.ToString());

        DialogResult res = dlg.ShowDialog();

            //if the user clicks OK  

        if (res == DialogResult.OK)

        {        

            if (dlg.favFile == "Favorites")

                //add a favorite to xml file and in treeview

                addFavorit(getCurrentBrowser().Url.ToString(),

                           dlg.favName);

            //add a link in xml file and in links bar

            //the addLink() method is listed

            //in the Links Bar section of this article

            else addLink(getCurrentBrowser().Url.ToString(),

                         dlg.favName);

        }

        dlg.Close();

    }

}

 

Метод addFavorit()внесений до списку нижче. Це подібно до методу addLink, крім того це відкриває інший XML файл, що містить вибраний веб-вузол, і це додає TreeNode в favTreeView.

 

private void addFavorit(String url, string name)

{

    XmlDocument myXml = new XmlDocument();

    XmlElement el = myXml.CreateElement("favorit");

    el.SetAttribute("url", url);

    el.InnerText = name;

    if (!File.Exists(favXml))

    {

        XmlElement root = myXml.CreateElement("favorites");

        myXml.AppendChild(root);

        root.AppendChild(el);

    }

    else

    {

        myXml.Load(favXml);

        myXml.DocumentElement.AppendChild(el);

    }

    if (favoritesPanel.Visible == true)

    {

        TreeNode node = new TreeNode(el.InnerText,

          faviconIndex(el.GetAttribute("url")),

          faviconIndex(el.GetAttribute("url")));

        node.ToolTipText = el.GetAttribute("url");

        node.Name = el.GetAttribute("url");

        node.ContextMenuStrip = favContextMenu;

        favTreeView.Nodes.Add(node);

    }

    myXml.Save(favXml);

}

Перегляд джерела

Елемент WebBrowser має властивість DocumentText, що представляє HTML вміст сторінки, показаної у вікні. Для розгляду джерела веб-вузла в Блокноті, спочатку створюють тимчасовий файл, пишуть вміст HTML до цього файлу, а потім відкривають тимчасовий файл з Блокнотом.

 

private void sourceToolStripMenuItem_Click(object sender, EventArgs e)

{

    String source=("source.txt");

    StreamWriter writer =File.CreateText(source);

    writer.Write(getCurrentBrowser().DocumentText);

    writer.Close();

    Process.Start("notepad.exe", source);

}

Пошук

У полі адреси є текстове поле, де користувач може ввести ключові слова, які він хоче знайти. Це текстове поле має KeyDown подію. Коли користувач натискає "Enter", результат буде показаний в поточній таблиці. Користувач може вибрати Google Search або Live Search у спливаючій кнопці біля пошукової панелі.

 

private void searchTextBox_KeyDown(object sender, KeyEventArgs e)

{

    if (e.KeyCode == Keys.Enter)

        if (googleSearch.Checked == true)

            getCurrentBrowser().Navigate("http://" +

              "google.com/search?q=" + searchTextBox.Text);

        else

            getCurrentBrowser().Navigate("http://search." +

              "live.com/results.aspx?q="+searchTextBox.Text);                      

}

Збереження настроювальних Параметрів

Іноді користувач хоче зберегти проміжні настроювальні  параметри. Для збереження настроювальних параметрів подібно до домашньої сторінки, стилю відображення панелі меню або панелі посилань, використовується XML файл з ім’ям "settings.xml".

 

<settings>

  <menuBar visible="True" />

  <adrBar visible="True" />

  <linkBar visible="True" />

  <favoritesPanel visible="True" />

  <SplashScreen checked="False" />

  <homepage>about:blank</homepage>

  <dropdown>15</dropdown>

</settings>

 

Коли головну форму завантажено, ці налаштування зчитуються з XML файлу. Коли користувач змінює налаштування, вміст XML файлу змінюється. Ці зміни зберігаються і тоді, коли форма закрита.

 

Зміна виду Панелі посилань

 

У головній формі є контекстне меню з назвою toolBarContextMenu з елементами, що зображені нижче. Кожен елемент має подію Клацання. Коли користувач клацає по одному з елементів в контекстному меню, вид цього елементу змінюється.

 

 

{

    linkBar.Visible = !linkBar.Visible;

    this.linksBarToolStripMenuItem.Checked = linkBar.Visible;

   

    //settings represents the xml file

    //"settings.xml" opened when the form loads

    settings.DocumentElement.ChildNodes[2].Attributes[0].Value =

                             linkBar.Visible.ToString();

}

 

Заміна домашньої сторінки

 

Також створено форму з  назвою InternetOptions яка розглядатиметься як діалог. Користувач може змінити початкову сторінку, появу, або число спливаючих елементів в полі адреси.

 

String homePage;

 

InternetOption optionDialog =

  new InternetOption(getCurrentBrowser().Url.ToString());

if (optionDialog.ShowDialog() == DialogResult.OK)

{

    //if the user setted a home page  

    if (!optionDialog.homepage.Text.Equals(""))

    {

        homePage = optionDialog.homepage.Text;

       //changing the setting in the xml file

        //settings represents the xml file

        //"settings.xml" opened when the form loads

        settings.DocumentElement.ChildNodes[5].InnerText =

                                 optionDialog.homepage.Text;

    }

}

 

Властивості, Друк, Попередній Перегляд, Установки Сторінки, Зберегти Як

Деякі методи елементів WebBrowser вносяться до списку тут:

- public void ShowPropertiesDialog (): Відкривається діалогове вікно властивостей поточного документу Internet Explorer.

 

private void propertiesToolStripMenuItem_Click(object sender, EventArgs e)

{

    getCurrentBrowser().ShowPropertiesDialog();

}

 

- public void ShowPageSetupDialog (): Відкривається діалогове вікно налаштувань сторінки Internet Explorer.

 

private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e)

Информация о работе Як отримати значок веб-сайту