Студопедия

КАТЕГОРИИ:


Архитектура-(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 предоставляет предварительно определенные имена форматов для использования. Можно также использовать собственные имена форматов или использовать тип объекта в качестве его формата.

Чтобы определить, содержит ли буфер обмена данные в определенном формате, используйте один из методов ContainsFormat или метод GetData. Чтобы извлечь данные из буфера обмена, воспользуйтесь одним из методов GetFormat или методом GetData. Эти методы являются новыми в.NET Framework, версия 2.0.

Для доступа к данным из буфера обмена с помощью более ранних версий, чем.NET Framework 2.0, используйте метод GetDataObjec t и вызывайте методы возвращаемого интерфейса IDataObject. Чтобы определить, является ли доступным определенный формат в возвращаемом объекте, вызовите, например, метод GetDataPresent.

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

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

Используйте метод GetAudioStream, GetFileDropList, GetImage или GetText. При необходимости используйте сначала соответствующие методы ContainsFormat, чтобы определить, доступны ли данные в определенном формате. Эти методы доступны только в.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;}

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

// 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; } }}

Для извлечения данных из буфера обмена в нескольких форматах, выполните следующие действия. Используйте метод GetDataObject. Этот метод необходимо использовать для извлечения данных из буфера обмена для более ранних версий, чем.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; } }}

 

 

<== предыдущая лекция | следующая лекция ==>
Добавление данных в буфер обмена | Подготовка великой крестьянской реформы
Поделиться с друзьями:


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


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



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




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