Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Добавление данных в буфер обмена

Класс Clipboard предоставляет методы, которые можно использовать для взаимодействия с функцией буфера обмена операционной системы Windows. Многие приложения используют буфер обмена в качестве временного хранилища данных. Например, текстовые процессоры используют буфер обмена во время операций вырезания и вставки. Буфер обмена также полезен для передачи данных из одного приложения в другое.

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

Формат буфера обмена является строкой, которая определяет формат таким образом, чтобы приложение, использующее этот формат, могло получать связанные данные. Класс DataFormats предоставляет предварительно определенные имена форматов для использования. Можно также использовать собственные имена форматов или использовать тип объекта в качестве его формата.

Чтобы добавить данные в буфер обмена в одном или нескольких форматах, используйте метод SetDataObject. Этому методу можно передать любой объект, но для добавления данных в нескольких форматах необходимо сначала добавить данные в отдельный объект, предназначенный для работы с несколькими форматами данных. Обычно данные добавляются к объекту DataObject, но можно использовать любой тип, реализующий интерфейс IDataObject.

В.NET Framework, версия 2.0 можно добавить данные непосредственно в буфер обмена с помощью новых методов, позволяющих упростить основные задачи при работе с буфером обмена. Используйте эти методы при работе с данными в одном общем формате, такими как текст. Все приложения Windows используют один буфер обмена. Поэтому содержимое буфера обмена может изменяться при переходе к другому приложению.

Класс Clipboard может использоваться только в потоках в режиме однопотокового подразделения. Чтобы использовать этот класс, убедитесь, что используемый метод Main помечен атрибутом STAThreadAttribute.

Для помещения в буфер обмена объект должен быть сериализуемым. Чтобы сделать тип сериализуемым, его необходимо пометить атрибутом SerializableAttribute. Если методу буфера обмена передается не сериализуемый объект, метод завершится неудачей без создания исключения.

Чтобы добавить данные в буфер обмена в одном общем формате, выполните следующие действия.

Используйте метод SetAudio, SetFileDropList, SetImage или SetText. Эти методы доступны только в.NET Framework, версия 2.0

// Demonstrates SetAudio, ContainsAudio, and GetAudioStream.public System.IO.Stream SwapClipboardAudio(System.IO.Stream replacementAudioStream){ System.IO.Stream returnAudioStream = null; if (Clipboard.ContainsAudio()) { returnAudioStream = Clipboard.GetAudioStream(); Clipboard.SetAudio(replacementAudioStream); } return returnAudioStream;} // Demonstrates SetFileDropList, ContainsFileDroList, and GetFileDropListpublic System.Collections.Specialized.StringCollection SwapClipboardFileDropList(System.Collections.Specialized.StringCollection replacementList){ System.Collections.Specialized.StringCollection returnList = null; if (Clipboard.ContainsFileDropList()) { returnList = Clipboard.GetFileDropList(); Clipboard.SetFileDropList(replacementList); } return returnList;} // Demonstrates SetImage, ContainsImage, and GetImage.public System.Drawing.Image SwapClipboardImage(System.Drawing.Image replacementImage){ System.Drawing.Image returnImage = null; if (Clipboard.ContainsImage()) { returnImage = Clipboard.GetImage(); Clipboard.SetImage(replacementImage); } return returnImage;} // Demonstrates SetText, ContainsText, and GetText.public String SwapClipboardHtmlText(String replacementHtmlText){ String returnHtmlText = null; if (Clipboard.ContainsText(TextDataFormat.Html)) { returnHtmlText = Clipboard.GetText(TextDataFormat.Html); Clipboard.SetText(replacementHtmlText, TextDataFormat.Html); } return returnHtmlText;}

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

Используйте метод SetData с именем пользовательского формата. Этот метод доступен только в.NET Framework, версия 2.0. Можно также использовать предварительно определенные имена форматов с помощью метода SetData.

// Demonstrates SetData, ContainsData, and GetData// using a custom format name and a business object.public Customer TestCustomFormat{ get { Clipboard.SetData("CustomerFormat", new Customer("Customer Name")); if (Clipboard.ContainsData("CustomerFormat")) { return Clipboard.GetData("CustomerFormat") as Customer; } return null; }}... [Serializable]public class Customer{ private string nameValue = string.Empty; public Customer(String name) { nameValue = name; } public string Name { get { return nameValue; } set { nameValue = value; } }}

Чтобы добавить данные в буфер обмена в нескольких форматах, выполните следующие действия. Используйте метод SetDataObject и передайте ему объект DataObject, содержащий данные. Необходимо использовать этот метод для добавления данных в буфер обмена для более ранних версий, чем.NET Framework 2.0.

// Demonstrates how to use a DataObject to add// data to the Clipboard in multiple formats.public void TestClipboardMultipleFormats(){ DataObject data = new DataObject(); // Add a Customer object using the type as the format. data.SetData(new Customer("Customer as Customer object")); // Add a ListViewItem object using a custom format name. data.SetData("CustomFormat", new ListViewItem("Customer as ListViewItem")); Clipboard.SetDataObject(data); DataObject retrievedData = (DataObject)Clipboard.GetDataObject(); if (retrievedData.GetDataPresent("CustomFormat")) { ListViewItem item = retrievedData.GetData("CustomFormat") as ListViewItem; if (item!= null) { MessageBox.Show(item.Text); } } if (retrievedData.GetDataPresent(typeof(Customer))) { Customer customer = retrievedData.GetData(typeof(Customer)) as Customer; if (customer!= null) { MessageBox.Show(customer.Name); } }}... [Serializable]public class Customer{ private string nameValue = string.Empty; public Customer(String name) { nameValue = name; } public string Name { get { return nameValue; } set { nameValue = value; } }}
<== предыдущая лекция | следующая лекция ==>
Выполнение операции перетаскивания в Windows Forms | Извлечение данных из буфера обмена
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 296; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.