MSDN System.Drawing.Printing - пространство имен писал(а):Пространство имен System.Drawing.Printing предоставляет службы, связанные с печатью.
Обычно создается новый экземпляр класса PrintDocument, для которого задаются свойства, описывающие выводимый на печать документ, а затем для вывода документа на печать вызывается метод Print.
Чтобы задать выводимые на печать данные, используйте свойство PrintPageEventArgs.Graphics. При печати текстового файла используйте StreamReader следующим образом: считав из потока одну строку, вызовите метод DrawString, чтобы нарисовать строку как графический объект. Дополнительные сведения об этом процессе см. в классах Graphics и StreamReader.
PrintController, реализованный в производном классе, управляет процессом печати PrintDocument. Метод PrintDocument.Print вызывает контроллеры печати OnStartPrint, OnEndPrint, OnStartPage и метод OnEndPage, сообщающий принтеру способ печати документа. Дополнительные сведения о диалогах печати см. в разделах PrintDialog и PageSetupDialog.
Для подготовки к печати используется специализированный контроллер печати, диалог и элемент управления. Примеры контроллера печати и диалога см. в разделах PreviewPrintController, PrintPreviewDialog и PrintPreviewControl.
Иерархия пространства имен
Классы
Класс Описание
InvalidPrinterException Представляет исключение, возникающее при попытке доступа к принтеру с использованием неправильных параметров.
Margins Задает поля печатаемой страницы.
MarginsConverter Предоставляет MarginsConverter для Margins.
PageSettings Задает параметры одной страницы, выводимой на печать.
PaperSize Задает размер бумажного листа.
PaperSource Задает лоток, из которого принтер берет бумагу.
PreviewPageInfo Задает информацию для предварительного просмотра одной страницы. Этот класс не наследуется.
PreviewPrintController Задает контроллер печати, отображающий на экране документ в виде набора рисунков.
PrintController Управляет печатью документа.
PrintDocument Определяет повторно используемый объект, отправляемый для вывода на принтер.
PrinterResolution Представляет разрешение, поддерживаемое принтером.
PrinterSettings Задает сведения о способе печати документа, включая принтер, выполняющий печать.
PrinterSettings.PaperSizeCollection Содержит коллекцию объектов PaperSize.
PrinterSettings.
PaperSourceCollection Содержит коллекцию объектов PaperSource.
PrinterSettings.
PrinterResolutionCollection Содержит коллекцию объектов PrinterResolution.
PrinterUnitConvert Задает набор методов преобразования, применяющихся при взаимодействии с интерфейсом печати Win32 API. Этот класс не наследуется.
PrintEventArgs Предоставляет данные для событий BeginPrint и EndPrint.
PrintingPermission Управляет доступом к принтерам. Этот класс не наследуется.
PrintingPermissionAttribute Разрешает декларативные проверки разрешений для печати.
PrintPageEventArgs Предоставляет данные для события PrintPage.
QueryPageSettingsEventArgs Предоставляет данные для события QueryPageSettings.
StandardPrintController Задает контроллер печати, отправляющий данные на принтер.
Делегаты
Делегат Описание
PrintEventHandler Представляет метод, обрабатывающий событие BeginPrint или событие EndPrint из PrintDocument.
PrintPageEventHandler Представляет метод, обрабатывающий событие PrintPage модуля PrintDocument.
QueryPageSettingsEventHandler Представляет метод, обрабатывающий событие QueryPageSettings модуля PrintDocument.
Перечисления
Перечисление Описание
Duplex Задает параметр двухсторонней печати.
PaperKind Задает стандартные размеры бумаги.
PaperSourceKind Стандартные источники бумаги.
PrinterResolutionKind Задает разрешающую способность принтера.
PrinterUnit Задает несколько элементов измерения, используемых интерфейсом Win32 API для печати.
PrintingPermissionLevel Задает тип печати, разрешенной для выполнения кодом.
PrintRange Задает выводимую на печать часть документа.
См. также
Библиотека классов .NET Framework | PageSetupDialog | PrintDialog | PrintPreviewControl | PrintPreviewDialog | Windows Forms Print Support | Код: печать формы Windows Forms (Visual Basic) | Код: печать текстового файла (Visual Basic) | Код: печать объекта DataGrid (Visual Basic) | Пространства имен Windows-приложений в Visual Studio | Поддержка печати в Windows Forms | Managed Extensions for C++ Programming
Синтаксис на основе .NET Framework версии 1.1.4322.
15 ноября 2002.
MSDN Выбор параметров ввода и вывода файлов в Visual Basic .NET писал(а):Visual Basic .NET предоставляет программистам три подхода к файловому вводу и выводу: методы времени выполнения, содержащиеся в Visual Basic .NET; методы FileSystemObject; и файловые методы общеязыковой среды выполнения.
Методы работы с файлами в Visual Basic .NET
Пространство имен Microsoft.VisualBasic заполнено множеством функций и методов, известными по более ранним версиям Visual Basic. Хотя некоторые имена слегка изменились, основная масса сохранилась: Dir, Input, Print, Seek, Write, и так далее.
Небольшие изменения произошли в функциях, обслуживающих различные типы доступа к файлам, представленные ниже. Наиболее заметным изменением является замена функций FilePut/FilePutObject и FileGet/FileGetObject функциями Put и Get. В Visual Basic .NET функции FilePut и FileGet преобразуются в функции Put и Get; а функции FilePutObject и FileGetObject используются для записи объектов типа Object (эквивалентного типу Variant в более ранних версиях Visual Basic) в файл. Дополнительные сведения см. в разделе Изменения констант типа Variant в Visual Basic .NET.
Преимущества и недостатки
Два основных преимущества функций, предоставленных средой выполнения Visual Basic .NET, знакомы и просты в использовании. Основная функциональность Visual Basic .NET является интуитивно понятной и гибкой, а также хорошо знакомой пользователям, что делает .NET удобным для изучения.
Таким образом, процесс обновления программы, написанной на более ранней версии Visual Basic, до ее эквивалента на .NET или процесс создания приложения, которое нормально взаимодействует с приложениями, написанными на более ранних версиях, должен быть достаточно простым. Дополнительные сведения об обновлении предыдущих версий кода см. в разделе Подготовка приложения Visual Basic 6.0 к обновлению.
Кроме того, функции Visual Basic .NET, в отличие от объекта FileSystemObject (описано в следующем разделе), обеспечивают доступ к двоичным файлам, что оптимально при работе с полями переменной длины.
И наконец, при использовании встроенных в Visual Basic .NET функций файлового ввода и вывода изнутри Visual Basic .NET более не возникает необходимости в отдельном рассмотрении задач, подобных импортированию пространств имен.
Фактически функции файлового ввода-вывода Visual Basic .NET не поддерживают другие типы записи, кроме String, Date, Integer, Long, Single, Double, Decimal, а структуры и массивы указанных типов создают неудобства при использовании этих функций. Кроме того, классы не могут быть сериализованы, и производительность в таких случаях бывает не столь оптимальна, как при непосредственном использовании классов System.IO.
Примеры кода
В следующем примере проверяется, существует ли файл, и, если это так, он копируется в новый файл с помощью функции FileCopy.
Private Sub CopyFiles()
Dim checkFile As String
checkFile = Dir$("c:\test.txt")
If checkFile = "test.txt"
FileCopy "c:\test.txt", "c:\new.txt"
End If
End Sub
В следующем примере используется функция FilePut, аналог функции Put в предыдущих версиях Visual Basic, для записи данных в файл. В файл заносятся три записи, соответствующие содержимому структуры CustomerRecord .
Structure CustomerRecord
Public OrderNumber As Integer
Public Name As String
Public OrderDate As Date
End Structure
Sub WriteData()
Dim MyRecord As CustomerRecord
Dim RecordNumber As Integer
Dim RecordDate As Date
' Open file for random access.
FileOpen(1, "C:\TESTFILE.txt", OpenMode.Binary)
For RecordNumber = 1 To 3 ' Loop 3 times.
MyRecord.OrderNumber = RecordNumber ' Define OrderNumber.
MyRecord.OrderDate = RecordDate ' Define OrderDate.
MyRecord.Name = "My Name" & RecordNumber ' Create a string.
FilePut(1, MyRecord) ' Write record to file.
Next RecordNumber
FileClose(1)
End Sub
Классы .NET Framework
Пространство имен System.IO содержит классы File и Directory, которые обеспечивают основные функции для работы с файлами и каталогами. Поскольку все методы являются статическими или общими членами этих объектов, их можно использовать непосредственно, без предварительного создания экземпляра класса.
Преимущества и недостатки
Дополнения в общеязыковой среде выполнения создают обширную библиотеку классов. Например, пространство имен System.IO предоставляет больше возможностей, чем базовый файловый ввод и вывод; например, класс FileSystemWatcher, который позволяет следить за изменениями в файле, и классы FileInfo и DirectoryInfo, которые позволяют собирать данные о определенном файле или каталоге. Дополнительные сведения см. в разделах Класс FileSystemWatcher, Класс FileInfo и Класс DirectoryInfo.
Общеязыковая среда выполнения содержит также класс FileIOPermission, позволяющий контролировать доступ к файлам и каталогам. Это особенно важно для разработчиков, работающих с формами Web Forms, которые по умолчанию выполняются в контексте специального локального пользователя, именуемого ASPNET, создаваемого как часть установок ASP.NET и.NET Framework. Когда подобное приложение делает запрос к ресурсу, запрос выполняется в рамках контекста этого пользователя. Однако по умолчанию пользователь ASPNET имеет ограниченные разрешения, которые могут не позволить ему выполнить такие действия, как запись в файл из веб-приложения. Дополнительные сведения см. в разделе Класс FileIOPermission.
Общеязыковая среда выполнения также совместима с другими языками .NET, такими как Visual C#™, и может помочь в достижении соответствия приложений, что особо важно на корпоративном уровне.
Отсутствие знакомства с общеязыковой средой выполнения может создать сложности для программистов Visual Basic, осваивающих его новые подходы. В этом случае, лучше полагаться на уже хорошо известные методы.
Примеры кода
В следующем примере используется класс StreamReader для чтения содержимого текстового файла.
Imports System
Imports System.IO
Function ReadTextFile(ByVal path As String) As String
Dim sr As System.IO.StreamReader
Dim Contents As String
sr = New StreamReader(path)
Contents = sr.ReadToEnd()
sr.Close()
Return Contents
End Function
Следующий пример совершает обратные действия, используя аналогичный подход: выполняет запись в текстовый файл с помощью класса StreamWriter.
Imports System
Imports System.IO
Sub WriteTextFile(ByVal path As String, ByVal value As String)
Dim sr As StreamWriter
Dim Contents As String
sr = New StreamWriter(path)
sr.Write(value)
sr.Close()
End Sub
FileSystemObject
Объект FileSystemObject также, наряду с функциями и методами, предоставляемыми пространством имен Microsoft.VisualBasic, будет знаком пользователям предыдущих версий Visual Basic.
Модель FileSystemObject (FSO) предоставляет файлы, каталоги и диски в виде объектов COM, каждый из которых имеет собственные свойства и методы. Пользователь может создавать такие объекты, работать с ними, использовать их свойства для получения таких сведений, как содержимое папки, размер файла, время создания объекта и так далее. Можно получить доступ к объектам, представляющим собой системные файлы, каталоги и диски путем создания экземпляра объекта FileSystemObject и доступа к нему.
Объектная модель FSO, содержащаяся в библиотеке типов Microsoft Scripting Runtime (Scrrun.dll), поддерживает создание текстовых файлов и управление ими с помощью объекта TextStream. Дополнительные сведения см. в разделе Объект TextStream. Класс FileStream предоставляет поток для файла, допускающий как синхронные, так и асинхронные операции чтения и записи файловой системы, а также буферизацию ввода и вывода для лучшей производительности. Данные, записанные в буфер, и содержимое буфера записываются в файл, только когда буфер наполняется или вызывается метод Close. Дополнительные сведения см. в разделе Класс FileStream.
Преимущества и недостатки
Основное преимущество FSO заключается том, что в одном объекте собрано большое количество функций файлового ввода и вывода. После создания одного экземпляра объекта, можно иметь доступ к его методам и свойствам.
Объектная модель FSO также подходит для работы с потоками. Она содержит конструктор для асинхронного ввода и вывода, такого же, как при использовании методов BeginRead и BeginWrite, который позволяет основному потоку продолжать работу, предоставляя пользователю возможность обрабатывать данные позже. В режиме ожидания могут находиться сразу несколько запросов на ввод и вывод.
Несмотря на это, FSO имеет несколько недостатков. Как было замечено ранее, она работает только с текстовыми файлами. Для работы с двоичными файлами необходимо использовать указатели на адрес в памяти, или на массивы байтов, которые этим объектом не поддерживаются.
Более того, при чтении или записи больших объемов данных, они сохраняется в буфере и могут привести к большим затратам памяти. И наконец, отсутствует возможность управления разрешениями или атрибутами файлов и папок.
Пример кода
В следующем примере экземпляр объекта FileSystemObject используется для чтения файла и для записи его содержимого.
Public Class UsesScripting
Public Shared Sub Main()
Dim fileSystem As New Scripting.FileSystemObject()
Dim file As Scripting.TextStream
file = fileSystem.OpenTextFile("c:\test.txt", _
Scripting.IOMode.ForReading, False, _
Scripting.Tristate.TristateUseDefault)
Dim contents As String = file.ReadAll()
Console.WriteLine(contents)
file.Close()
End Sub
End Class
Public Class UsesScripting
Public Shared Sub Main()
Dim fileSystem As New Scripting.FileSystemObject()
Dim file As Scripting.TextStream
file = fileSystem.OpenTextFile("c:\test.txt", _
Scripting.IOMode.ForReading, False, _
Scripting.Tristate.TristateUseDefault)
Dim contents As String = file.ReadAll()
Console.WriteLine(contents)
file.Close()
End Sub
End Class
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43