Создание Windows приложений на C#





Содержание:
  
Свойства и события объектов comboBox и webBrowser   
  • Создаём панель закладок




Свойства и события объектов comboBox и webBrowser
События от клавиатуры.

На этом уроке создадим браузер для просмотра интернет страниц. Для этого создадим новый проект и расставим объекты так, как показано на рисунке:



В свойствах объекта comboBox1 выберем свойство Items и нажав кнопку "Collection", введём несколько строк - адресов популярных WEB сайтов.



Двойным щелчком на кнопке button4 ("Перейти") создадим событие для открытия веб страницы:

private void button4_Click(object sender, EventArgs e)
   {
    webBrowser1.Navigate("http://" + comboBox1.Text);
   }


Адрес веб страницы записывается в строку ввода comboBox1 и имеет свойство Text. Этот текст, в виде адреса вводится пользователем. Для того, что бы пользователь не набирал лишний раз http:// мы к этой строке прибавляем текст из comboBox1. Попробуем запустить наш браузер на исполнение и введём в строку ввода например, rambler.ru и нажмём кнопку "Перейти".



Затем, выберем из выпадающего списка, например mail.ru и опять нажмём кнопку "Перейти"



Браузер работает, но возникает одно неудобство - всё время, при вводе интернет адреса приходится нажимать кнопку "Перейти". Создадим такое событие что бы при нажатии клавиши "Enter" в строке ввода происходило событие аналогичное кнопке "Перейти". Для этого выделим comboBox1 и в закладке событий (Events) найдём событие KeyPress.



Двойным щелчком создадим событие и допишем нужные строки:

private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
   {
// Проверяем нажата ли клавиша Enter (код 13). Аргумент е - код нажатой клавиши
    if (e.KeyChar.Equals((char)13))
   {
// Если Enter нажат, то вызываем событие нажатия на кнопку "Перейти"
    button4_Click(sender,e);
   }
  }

Теперь, запустив наш браузер и введя адрес сайта, для перехода можно нажимать "Enter".
Осталось задействовать кнопки "<" - вернуться, ">" - вперёд и "0" - обновить. Создадим последовательно события для этих кнопок:

// Вернуться назад
private void button1_Click(object sender, EventArgs e)
   {
    webBrowser1.GoBack();
   }

// Перейти вперёд
private void button2_Click(object sender, EventArgs e)
   {
    webBrowser1.GoForward();
   }

// Обновить данные в браузере
private void button3_Click(object sender, EventArgs e)
   {
    webBrowser1.Refresh();
   }


Теперь браузер работает как полноценное приложение.


Создаём панель закладок.

Для создания панели закладок, добавим на браузере ещё одну кнопку "Закладки" (button5) и панель (panel1).



На панели расставим объекты, как показано на рисунке. Свойство visible панели следует установить в false (панель не будет отображаться при старте программы).
Для хранения закладок создадим на диске файл с любым именем, например C:\browser.ini



Изначально, файл будет пустым. В него следует (открыв в блокноте) записать цифру 0, эта цифра, в дальнейшем будет указывать на число строк в файле. Файл следует сохранить как ... в кодировке UTF-8.
В нашей программе, для работы с файлами, следует в начале программы добавить директиву: using System.IO;
Для кнопки button5 "Закладки" (двойным щелчком) создадим событие:

private void button5_Click(object sender, EventArgs e)
{
panel1.Visible = true;
button5.Visible = false;
textBox2.Text = comboBox1.Text;
// Очищаем список от содержимого
listBox1.Items.Clear();
// Создаём переменную reader для чтения из файла browser.ini
using (StreamReader reader = new StreamReader("C:\\browser.ini"))
{
// Считываем первую строку чтобы получить число строк в списке
string z = reader.ReadLine();
//В цикле считываем остальные строки из файла
for (int j = 0; j < Convert.ToDouble(z); j++)
listBox1.Items.Add(reader.ReadLine());
}
}

Создадим ещё одно событие на кнопку закрытия панели закладок:

//Закрыть панель закладок
private void button8_Click(object sender, EventArgs e)
{
panel1.Visible = false;
button5.Visible = true;
}

Запустим программу и убедимся, что панель закладок нормально открывается (кнопка ''Закладки'' пропадает), а при закрытии панели - появляется.



Создадим событие на кнопку "Добавить", так что бы имя и адрес сайта добавлялись в список. Сразу же сохраняем полученный новый список в файле.

//Добавить адрес в список listBox1
private void button6_Click(object sender, EventArgs e)
{
//Добавляем в список адрес и комментарий
//Символ вертикальная черта будет в последующем использоваться
//как разделитель комментария и адреса сайта
listBox1.Items.Add(textBox1.Text + "|" + textBox2.Text);
// Создаём переменную sw для записи данных в поток (файл)
using (StreamWriter sw = new StreamWriter("C:\\browser.ini"))
{
// Первой строкой записываем в файл число строк в нашем списке
sw.WriteLine(listBox1.Items.Count.ToString());
// В цикле записываем все строки в файл.
// Count - число строк в списке
for (int j = 0; j < listBox1.Items.Count; j++)
sw.WriteLine(listBox1.Items[j]);
}
}

Запустим наше приложение и добавим несколько адресов в список закладок.



Закроем панель закладок, а затем откроем вновь, чтобы убедиться, что добавленные закладки сохранились в файле.
Далее, создадим событие двойного щелчка на выбранной строке списка закладок. Из строки выделим адрес сайта и поместим адрес в адресную строку.

//Двойной щелчок на списке
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
string str = listBox1.SelectedItem.ToString();
string newstr = "";
int flag = 0; //flag определяет разделитель |
char c;
int k = str.Length;
//Выделяем из строки адрес сайта
for (int j = 0; j < k; j++)
{
c = str[j];
if (flag != 0) newstr += c;
if (c == '|') flag = 1;
}
//Подставляем в адресную строку адрес сайта
comboBox1.Text = newstr;
}
}

Запустим программу и убедимся, что при двойном щелчке на списке закладок, адрес выбранного сайта помещается в адресную строку.



И, наконец, создадим событие для кнопки "Удалить закладку".

//Удаление ненужной строки (закладки)
private void button7_Click(object sender, EventArgs e)
{
// Проверяем, есть ли в списке выделенная строка
if (listBox1.SelectedIndex == -1)
// Если нет, то выводим сообщение.
MessageBox.Show("Нет выделенной строки");
else
// Иначе .. Удаляем выделенную строку
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
//Сохраняем новый список в файле
using (StreamWriter sw = new StreamWriter("C:\\browser.ini"))
{
sw.WriteLine(listBox1.Items.Count.ToString());
for (int j = 0; j < listBox1.Items.Count; j++)
sw.WriteLine(listBox1.Items[j]);
}
}




  
©Гуков Константин Михайлович 2006 - 2012     Почта: [email protected]