Автор работы: Пользователь скрыл имя, 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
Зміст
У цій роботі описується, як створити і реалізувати деякі з особливостей додатку 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.
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(
//add some event handlers to your browser object
browser.ProgressChanged += new
WebBrowserProgressChangedEvent
browser.DocumentCompleted += new
WebBrowserDocumentCompletedEve
browser.Navigating +=
new WebBrowserNavigatingEventHandl
browser.CanGoBackChanged +=
new EventHandler(browser_
browser.CanGoForwardChanged +=
new EventHandler(browser_
}
У прикладі нижче показано, як отримати поточну таблицю:
private WebBrowser getCurrentBrowser()
{
return
(WebBrowser)browserTabControl.
}
Значок - це квадратна
ікона розміром 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) используется элемент ToolStrip. Кнопки посилання представлені в ToolStripButton із зображенням значка і назвою веб-сайту у вигляді тексту на кнопці. Посилання зберігаються в XML-файле, який виглядає таким чином:
<favorits>
<link url="http://www.google.ro/" >Google/<link>
<link url="http://www.codeproject.
<link url="http://www.youtube.com/
</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.
}
//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(
}
Кожен пункт контекстного меню має програму обробки події клацання. Нижче приведений приклад відкриття зв'язку в новому вікні:
private void openInNewWindowToolStripMenuIt
{
WBrowser new_form = new WBrowser();
new_form.Show();
new_form.getCurrentBrowser().
}
Для зберігання
Історії і Вибраного
history.xml
<history>
<item url="http://www.codeproject.
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.
lastVisited="13.08.2009 20:22:52" times="1" />
</history>
favorites.xml
<favorites>
<favorit url="http://images.google.ro/
Google-images</favorit>
<favorit url="http://www.yahoo.com/">
</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.
{
Uri site=new Uri(el.GetAttribute("url"));
if(!historyTreeView.Nodes.
historyTreeView.Nodes.Add(
//create a new tree node
TreeNode node =new TreeNode(el.GetAttribute("url"
//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.
}
//....
}
Для додавання веб-вузла до Вибраних використовується форма з ім'ям 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(
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()
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().
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("
myXml.AppendChild(root);
root.AppendChild(el);
}
else
{
myXml.Load(favXml);
myXml.DocumentElement.
}
if (favoritesPanel.Visible == true)
{
TreeNode node = new TreeNode(el.InnerText,
faviconIndex(el.GetAttribute("
faviconIndex(el.GetAttribute("
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(
{
String source=("source.txt");
StreamWriter writer =File.CreateText(source);
writer.Write(
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("
"google.com/search?q=" + searchTextBox.Text);
else
getCurrentBrowser().Navigate("
"live.com/results.aspx?q="+
}
Іноді користувач хоче зберегти проміжні настроювальні параметри. Для збереження настроювальних параметрів подібно до домашньої сторінки, стилю відображення панелі меню або панелі посилань, використовується XML файл з ім’ям "settings.xml".
<settings>
<menuBar visible="True" />
<adrBar visible="True" />
<linkBar visible="True" />
<favoritesPanel visible="True" />
<SplashScreen checked="False" />
<homepage>about:blank</
<dropdown>15</dropdown>
</settings>
Коли головну форму завантажено, ці налаштування зчитуються з XML файлу. Коли користувач змінює налаштування, вміст XML файлу змінюється. Ці зміни зберігаються і тоді, коли форма закрита.
Зміна виду Панелі посилань
У головній формі є контекстне меню з назвою toolBarContextMenu з елементами, що зображені нижче. Кожен елемент має подію Клацання. Коли користувач клацає по одному з елементів в контекстному меню, вид цього елементу змінюється.
{
linkBar.Visible = !linkBar.Visible;
this.
//settings represents the xml file
//"settings.xml" opened when the form loads
settings.DocumentElement.
linkBar.Visible.ToString();
}
Заміна домашньої сторінки
Також створено форму з назвою InternetOptions яка розглядатиметься як діалог. Користувач може змінити початкову сторінку, появу, або число спливаючих елементів в полі адреси.
String homePage;
InternetOption optionDialog =
new InternetOption(
if (optionDialog.ShowDialog() == DialogResult.OK)
{
//if the user setted a home page
if (!optionDialog.homepage.Text.
{
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.
}
}
Властивості, Друк, Попередній Перегляд, Установки Сторінки, Зберегти Як
Деякі методи елементів WebBrowser вносяться до списку тут:
- public void ShowPropertiesDialog (): Відкривається діалогове вікно властивостей поточного документу Internet Explorer.
private void propertiesToolStripMenuItem_
{
getCurrentBrowser().
}
- public void ShowPageSetupDialog (): Відкривається діалогове вікно налаштувань сторінки Internet Explorer.
private void pageSetupToolStripMenuItem_