Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1432

.pdf
Скачиваний:
1
Добавлен:
07.01.2021
Размер:
1.15 Mб
Скачать

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

Для создания параметра в окне свойств формы в группе ApplicationSettings нужно щелкнуть мышью по строке PropertyBinding, затем по возникшей там кнопке (рис. 11.1). После этого действия появляется окно Параметры приложения для Form1 (рис. 11.2), в котором выбирается параметр и задается его имя.

Рис. 11.2. Окно Параметры приложения для Form1

Например, для параметра ClientSize можно указать имя U_size, а для параметра Location – имя U_loc. Эти параметры позволят при перезапуске приложения получать его окно с сохраненными размерами и положением. Добавить, изменить или удалить параметры можно в окне Свойства проекта, открыв его с помощью контекстного меню после щелчка правой кнопкой мыши по имени проекта в Обозревателе решений.

Рис. 11.3. Изменение параметров в окне Свойства проекта

139

Объект My.Settings

Объект My.Settings предоставляет доступ к параметрам приложения и позволяет динамически хранить и извлекать свойства и другие сведения для приложения. Свойства объекта My.Settings обеспечивают доступ к параметрам приложения. Каждый параметр имеет имя, тип, область действия, значение, и эти настройки определяют доступ к каждому параметру в объекте My.Settings:

Имя – определяет имя свойства.

Тип – определяет тип свойства.

Область действия может принимать одно из двух значений: Приложение – свойство доступно только для чтения. Пользователь – свойство доступно для чтения и записи.

Значение – является значением по умолчанию.

Вследующей строке кода выполняется чтение параметра

User_Size.

Label1.Text = My.Settings.User_Size.ToString()

Параметры пользователя можно изменить, присваивая новое значение свойству объекта параметров My.Settings, например, так можно изменить свойство User_Name:

My.Settings.User_Name = “Сидоров С.С.”

Для сохранения измененных пользовательских параметров можно использовать метод My.Settings.Save.

My.Settings.Save()

Отметим, что все параметры в примерах, нужно определять так, как было описано выше – в окне Свойства формы или в окне

Свойства проекта.

Таблица свойств пользовательских параметров

Можно отобразить параметры пользователя, заполнив элемент управления PropertyGrid. Для этого необходимо выполнить следующие действия:

1.Добавить элемент управления PropertyGrid на форму.

2.Задать объект My.Settings в качестве объекта таблицы свойств. PropertyGrid1.SelectedObject = My.Settings

3.Настроить таблицу свойств для отображения только параметров пользователей.

140

Dim U_A As New System.Configuration.UserScopedSettingAttribute

Dim A As New System.ComponentModel.AttributeCollection(U_A)

PropertyGrid1.BrowsableAttributes = A

Чтобы отобразить только параметры приложения, нужно использовать атрибут ApplicationScopedSettingAttribute вместо UserScopedSettingAttribute.

Пример программы

В примере параметры пользователя отражаются в таблице при загрузке формы, а также в поле ListBox после щелчка по управляющей кнопке. Параметры приложения сохраняются в процедуре обработки события Завершение работы с формой.

‘ Пример 11.1

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click

ListBox1.Items.Add(My.Settings.U_size.ToString())

ListBox1.Items.Add(My.Settings.U_Loc.ToString())

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load PropertyGrid1.SelectedObject = My.Settings

Dim userAttr As New _ System.Configuration.UserScopedSettingAttribute Dim attrs As New _ System.ComponentModel.AttributeCollection(userAttr) PropertyGrid1.BrowsableAttributes = attrs

End Sub

Private Sub Form1_FormClosed(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.FormClosedEventArgs) _ Handles MyBase.FormClosed

My.Settings.Save() End Sub

End Class

141

11.2. Справочная информация

Интерес к программе со стороны пользователя повышается, если она снабжена хорошей справочной информацией. Удобную для просмотра справку с произвольным числом разделов можно создать в текстовом файле на языке HTML.

Для присоединения справки к приложению можно использовать компонент HelpProvider. Разделы справки затем можно привязать к определенным элементам управления на форме.

Порядок подключения справки

1.Перетащить компонент HelpProvider из панели элементов в форму.

2.В окне Свойства задать значение свойству HelpNamespace в виде CHM-, COLили HTM-файла справки.

3.Выбрать элемент управления, к которому нужно привязать раздел справки, и задать свойство HelpKeyword. Это ключевое слово (строка), по которому в файле справки будет найден соответствующий раздел.

4.В окне Свойства присвойте свойству HelpNavigator значение перечисления HelpNavigator. Это определяет способ передачи свойства HelpKeyword в справочную систему. Ниже приведены возможные параметры и их описания:

AssociateIndex – указывает, что индекс для данного раздела выполняется в заданном URL.

Find – указывает, что отображается страница поиска заданного URL-адреса.

Указатель – указывает, что отображается указатель заданного URL-адреса.

KeywordIndex – указывает ключевое слово для поиска и действие для выполнения в заданном URL-адресе.

TableOfContents – указывает, что отображается оглавление файла справки HTML 1.0.

Topic – указывает, что отображается раздел, на который ссылается заданный URL-адрес.

Во время выполнения нажатие клавиши F1 при находящемся в фокусе элементе управления (для которого заданы свойства HelpKeyword и HelpNavigator) открывает файл справки, связанный с

142

компонентом HelpProvider. Отметим, что компонент HelpProvider можно использовать для отображения всплывающей справки.

Создание файла справки

Создайте текстовый файл, имеющий расширение .htm. В заголовке файла поместить описания ключевых слов. Файл должен иметь в заголовке мета-тег, а также описания ключевых слов.

Пример 11.2

<html>

<head>

<META HTTP-EQUIV="Htm-Help"

Content="PROG.htm#Main_Contents"> <KEYWORD VALUE="R0" TITLE="Введение" HREF="PROG.htm#Main_contents">

<KEYWORD VALUE="R1" TITLE="Первый раздел" HREF="PROG.htm#R1">

<KEYWORD VALUE="R2" TITLE="Второй раздел" HREF="PROG.htm#R2">

</head>

Первый раздел в файле справки следует назвать Main_contents, остальные могут иметь произвольные имена (в примере R1, R2). Одному разделу может соответствовать несколько ключевых слов, которые отделяются точкой с запятой, например:

<KEYWORD VALUE="R0;запуск;старт"

Количество ключевых слов для раздела не ограничено. Содержимое разделов, включая main_contents, начинается тегом комментария:

<!-- PegHelp -->

Раздел Main_contents обычно содержит ссылки на подразделы. Обратите внимание, что требуется имя файла в дополнение к имени привязки.

Пример 11.3

<body>

<!-- PegHelp -->

<a name="Main_Contents"></a> <b>Введение</b>

143

</p>

<a href="PROG.htm#R0">Введение</a><br> <a href="PROG.htm#R1">Раздел 1</a><br>

В справку можно добавить графические объекты, например: <img src="1.bmp">

Пример справки на языке HTML

В примере создано три раздела, считая Введение. В справке использованы три картинки.

Пример 11.4

<html>

<head>

<META HTTP-EQUIV="Htm-Help"

Content="PROG.htm#Main_Contents"> <KEYWORD VALUE="R0" TITLE="Введение" HREF="PROG.htm#Main_contents">

<KEYWORD VALUE="R1" TITLE="Первый раздел" HREF="PROG.htm#R1">

<KEYWORD VALUE="R2" TITLE="Второй раздел" HREF="PROG.htm#R2">

</head>

<body>

<!-- PegHelp --> <p>

<a name="Main_Contents"></a> </p>

<p>

<a href="PROG.htm#R1">Первый раздел</a><br> <a href="PROG.htm#R2">Второй раздел</a><br> </p>

<b>Введение справки</b> </p>

<p>

Текст введения справки

</p>

<p>

<img src="1.bmp">

144

</p>

<!-- PegHelp -->

<!-- ******* TOPIC BREAK ******* --> <hr>

<a name="R1"></a>

<p><b>Первый раздел справки</b></p> <p>

Текст первого раздела справки

</p>

<p>

<img src="2.2bp"> </p>

<!-- PegHelp -->

<!-- ******* TOPIC BREAK ******* --> <hr>

<a name="R2"></a>

<p><b>Второй раздел справки</b></p> <p>

Текст первого раздела справки

</p>

<p>

<img src="3.bmp"> </p>

</body>

</html>

11.3. Чтение данных из книги Microsoft Excel

Для чтения данных с листа книги Microsoft Excel необходимы команды из пространства имен System.Data.OleDb. Для доступа к файлу формируется строка подключения.

Пример 11.5

имя файла

Dim F_N As String = "Фирма.xls"

‘ строка соединения

Dim C_S As String = String.Format( _ "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties= _ 'Excel 8.0;HDR=No';Data Source={0}", F_N)

145

Спомощью оператора OleDbConnection открывается соединение.

создать соединение

Dim CNT As OleDbConnection = New OleDbConnection(C_S)

открыть соединение

CNT.Open()

Спомощью оператора GetOleDbSchemaTable создается структура, содержащая схему книги Excel.

Пример 11.6

получить схему таблицы

Dim S_T As DataTable = CNT.GetOleDbSchemaTable( _

OleDbSchemaGuid.Tables, _

New Object() {Nothing, Nothing, Nothing, "TABLE"})

Каждая строка полученной структуры содержит сведения об одном из листов. Колонка schemaTable.Rows[i].ItemArray[2] содержит названия листов, а schemaTable.Rows[i].ItemArray[7] – даты модификации листов.

Пример 11.7

отобразить названия листов

For i As Integer = 0 To S_T.Rows.Count - 1

ListBox1.Items.Add(S_T.Rows(i).ItemArray(2).ToString())

ListBox1.Items.Add(S_T.Rows(i).ItemArray(7).ToString())

Next

Колонка schemaTable.Rows[i].ItemArray[0] содержит имя первого листа.

Dim sh_1 As String = S_T.Rows(0).ItemArray(2).ToString()

С помощью оператора StringFormat формируется строка запроса для первого листа. Оператор OleDbDataAdapter реализует запрос с данной строкой. Оператор Fill обновляет строки в объекте System.Data.DataSet. Оператор Tables передает выбранные строки таблицы в переменную tb.

Пример 11.8

запрос на данные с листа 1

Dim sel_cel As String = String.Format( _ "SELECT * FROM [{0}]", sh_1)

‘ объект OleDbDataAdapter

146

Dim Adp As OleDbDataAdapter = New OleDbDataAdapter( _

sel_cel, CNT)

‘ объект DataSet

Dim D_S As DataSet = New DataSet("EXCEL")

‘ читать данные из файла в объет DataSet Adp.Fill(D_S)

‘ объект DataTable

Dim TB As DataTable = D_S.Tables(0)

Отобранные с помощью запроса данные выводятся в поле

ListBox.

‘ отобразить данные с листа 1

For Each ROW As DataRow In TB.Rows S = ""

For Each COL As Object In ROW.ItemArray S = S + " " + COL.ToString()

Next ListBox1.Items.Add(S) Next

Пример программы

В примере данные читаются с листа 1 документ фирма.xls. Прочитанная информация выводится в поле компонента ListBox.

‘ Пример 11.9

Imports System.Data.OleDb Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click

‘ имя файла

Dim F_N As String = "Фирма.xls"

‘ строка соединения

Dim C_S As String = String.Format( _ "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties= _ 'Excel 8.0;HDR=No';Data Source={0}", F_N)

147

‘ объект DataSet

Dim D_S As DataSet = New DataSet("EXCEL")

‘ создать соединение

Dim CNT As OleDbConnection = New OleDbConnection(C_S)

открыть соединение

CNT.Open()

получить схему таблицы

Dim S_T As DataTable = CNT.GetOleDbSchemaTable( _

OleDbSchemaGuid.Tables, _

New Object() {Nothing, Nothing, Nothing, "TABLE"})

‘ отобразить названия листов

For i As Integer = 0 To S_T.Rows.Count - 1 ListBox1.Items.Add(S_T.Rows(i).ItemArray(2).ToString()) Next

‘ лист 1

Dim sh_1 As String = S_T.Rows(0).ItemArray(2).ToString()

‘ запрос на данные с листа 1

Dim sel_cel As String = String.Format( _ "SELECT * FROM [{0}]", sh_1)

‘ объект OleDbDataAdapter

Dim Adp As OleDbDataAdapter = New OleDbDataAdapter( _ sel_cel, CNT)

читать данные из файла в объект DataSet Adp.Fill(D_S)

объект DataTable

Dim TB As DataTable = D_S.Tables(0)

Dim S As String

‘ отобразить данные с листа 1

For Each ROW As DataRow In TB.Rows

148

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]