- •Поставщики данных ado.Net
- •Для создания набора данных
- •Создание объектов Connection sql Server
- •Создание объектов Connection odbc
- •Пул подключения
- •Разработка приложений с многодокументным интерфейсом
- •Создание родительской формы
- •Создание дочерних форм
- •Работа с потоками
- •Синхронизация потоков
- •Взаимодействие потоков
- •Создание потоков
- •Элемент управления webBrowser
- •Работа с документами в элементе управления webBrowser
- •Создание браузера
- •Работа с xml документами
- •Чтение содержимого xml
- •Запись xml документа
- •Чтение xml в dom
Создание потоков
Прежде всего, для работы с потоками необходимо подключить про-странство имен System.Threading.
Для того чтобы создавать в приложении новые потоки, необходимо задать метод, который будет являться точкой входа в поток. Этот метод должен быть типа void и без параметров. В нашем случае именно в этом методе (который здесь назван MoveCircle()) и будет осуществляться движение круга.
В этом методе сначала создается контекст графического устройства и две кисти: одна (красного цвета) для круга, вторая (цвета формы) – для стирания предыдущего изображения круга.
Чтобы два круга в разных потоках не сливались друг с другом, для них указываются разные координаты x. Значения координаты устанавливаются в зависимости от имени потока (свойство Name).
После этого в цикле, пока не достигнут нижний край формы, рисуется очередной круг, поток на некоторое время приостанавливается (иначе дви-жение будет происходить настолько быстро, что увидеть его просто не получится), а затем круг стирается.
После окончания цикла для корректности выводится сообщение о за-вершении текущего потока. Листинг метода приведен ниже:
private void MoveCircle()
{
//создаем контекст устройства
Graphics g = this.CreateGraphics();
//создаем красную кисть - для круга
Brush b1 = Brushes.Red;
//и кисть цвета формы - для стирания круга
Brush b2 = SystemBrushes.Control;
int x;
//координата x круга будет зависеть от имени потока
if (Thread.CurrentThread.Name == "First")
x = Width / 2 - 30;
else
x = Width / 2 + 30;
//цикл от верхнего до нижнего края формы
for (int y = 10; y < Height - 40; y++)
{
//рисуем круг
g.FillEllipse(b1, x - 10, y - 10, 20, 20);
//"усыпляем" поток на 30 миллисекунд
Thread.Sleep(30);
//стираем круг
g.FillEllipse(b2, x - 10, y - 10, 20, 20);
}
//проверяем корректность завершения потока
MessageBox.Show("Поток " + Thread.CurrentThread.Name + " завершен!");
}
Непосредственное создание потоков можно выполнять в обработчике события Load главной формы. При этом для каждого потока нужно создать объект класса Thread, указав при этом имя метода, который будет точкой входа в поток. Далее следует присвоить потоку имя и запустить его с помощью метода Start(). Код обработчика приведен ниже:
private void Form1_Load(object sender, EventArgs e)
{
//создаем первый поток
//(точка входа в него - метод MoveCircle())
Thread thread1 = new Thread(new ThreadStart(MoveCircle));
//присваиваем потоку имя
thread1.Name = "First";
//аналогично для второго потока
Thread thread2 = new Thread(new ThreadStart(MoveCircle));
thread2.Name = "Second";
//запускаем оба потока
thread1.Start();
thread2.Start();
}
Элемент управления webBrowser
Элемент управления WebBrowser позволяет разместить в приложениях Windows Forms веб-страницы и другие документы с поддержкой веб-обозревателя. Например, элемент управления WebBrowser можно использовать для обеспечения интеграции справочной HTML-системы или возможностей веб-обзора в приложении. Кроме того, элемент управления WebBrowser можно использовать для добавления существующих веб-элементов управления в клиентские приложения Windows Forms. Элемент управления WebBrowser позволяет приложению в Интернете, просмотр документов и загрузки данных. Пользователи приложений, использующих этот элемент управления можно просмотреть на веб-сайты, папки на локальном компьютере и папки на сетевом диске.
Простейшим способом встроить этот элемент управления с помощью Visual Studio.NET является добавление элемента управления в панель инструментов. Для этого щелкните правой кнопкой мыши на Toolbox в VisualStudio.NET и выберите Customize Toolbox из контекстного меню, что вызывает диалоговое окно, приведенное ниже. Необходимо выбрать вкладку COM Component и щелкнуть на Microsoft Web Browser.
Элемент управления WebBrowser появится теперь в панели инструментов, можно щелкнуть та нем, чтобы поместить его на форму в приложении Windows на C#, так же, как любой другой элемент управления Windows Forms в .NET. Visual Studio.NET автоматически создает весь код взаимодействия COM, необходимый программе C# для работы в качестве клиента с этим элементом управления, чтобы можно было интерпретировать его как просто элемент управления .NET. Это будет продемонстрировано с помощью другого очень короткого примера
DisplayWebPage
, в котором выводится страница Web с жестко закодированным URI.
DisplayWebPage
создается как стандартное приложение Windows C#, элемент управления ActiveX
WebBrowser
помещается в форму, как описано выше. По умолчанию Visual Studio.NET именует соответствующую переменную
axWebBrowser1
, и здесь будет оставлено имя по умолчанию. Затем в конструктор
Form1
добавляется код:
public Form1()
// Требуется для поддержки Windows Form Designer.
InitializeComponent();
int zero = 0;
object oZero = zero;
string emptyString = "";
object oEmptyString = emptyString;
axWebBrowser1.Navigate("http://www.wrox.com",
ref oZero, ref oEmptyString,
ref oEmptyString, ref oEmptyString);
}
