C#. Использование буфера обмена. Часть 1.

Доброго времени суток! В этой статье я познакомлю Вас с возможностями использования буфера обмена операционной системы, которые предоставляет язык программирования C#. Данной теме я планирую посвятить несколько статей, поэтому в первой (той, которую Вы сейчас читаете) я расскажу о самых основных моментах, но которых может хватить  пожалуй в 90% случаях с которыми вы столкнетесь. Вы узнаете как записать (поместить) текст в буфер обмена, как извлечь текст из буфера обмена, как очистить буфер обмена и т.п. И так, можно сказать что буфер обмена есть не что иное как промежуточное хранилище, в которое помещаются определенные данные, когда пользователь операционной системы копирует (Ctrl+C)/вырезает (Ctrl+X) какую-либо информацию (будь то текст из текстового редактора, или группа файлов из каталога и т.п.). При этом, когда пользователь в дальнейшем вставляет скопированные/вырезанные данные (Ctrl+V), копия этих данных извлекается из буфера обмена и помещается в указанное место. И на самом деле, далеко не все пользователи догадываются о существовании буфера обмена, точнее они знают что можно выполнять операции копирования/вставки, но о том как это всё работает, пользователю знать не обязательно, но другое дело программист. Программисту может понадобиться доступ к данным, которые находятся в буфере обмена (как правило, это нужно для повышения удобства использования программы). Например, можно позволить пользователю копировать данных из Excel-файла, и вставлять в компонент ListView,  расположенный на одной из формы Вашей программы. При этом, перед вставкой скопированных из Excel-файла данных, Вы можете их как-то обрабатывать или преобразовывать. В общем, все зависит от прикладной задачи.

Но давайте перейдем к языку программирования C#. Для доступа к буферу обмена, в языке программирования C# есть класс «Clipboard», имеющий ряд статических методов, с помощью которых и выполняются все операции с буфером обмена. И как обещал, в этой статье я дам только самую базовую информацию по работе с буфером обмена. Я расскажу о том как помещать данные в буфер обмена ОС, как их извлекать оттуда, как очищать буфер обмена (удалять из него всё содержимое).

Для простоты я буду касаться только текстовых данных (на самом деле, в буфер обмена можно поместить не только текст, но и изображения и другие данные).

И так, теперь к практике… Для решения поставленных выше задач, нам понадобятся следующие статические методы класса «Clipboard»:

Метод Описание
SetText(string) Помещает текст (переданный в качестве аргумента) в буфер обмена
GetText() Возвращает текст из буфера обмена (помещенный туда до этого)
Clear() Удаляет содержимое буфера обмена
ContainsText() Если в буфере обмена содержится текст — метод вернет true (в противном случае — false)

Как видите, всего четыре метода, и только один принимает параметры (а точнее — один параметр). Ниже, я привел фрагмент исходного кода, который можно вставить в обработчик «клика» какой-нибудь кнопки на форме. В результате, при нажатии на эту кнопку, программа проверяет есть ли в буфере обмена текст, и если есть, то выводит его в сообщении (MessageBox’e), в противном случае, выводит сообщение о том, что в буфере обмена нет текста.

 
    //Если в буфере обмен содержится текст
    if (Clipboard.ContainsText() == true)
    {
        //Извлекаем (точнее копируем) его и сохраняем в переменную
        string someText = Clipboard.GetText();

        //Выводим показываем сообщение с текстом, скопированным из буфера обмена
        MessageBox.Show(this, someText, "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
    }
    else
    {
        //Выводим сообщение о том, что в буфере обмена нет текста
        MessageBox.Show(this, "В буфере обмена нет текста", "Сообщение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }

Чтобы попробовать как это работает, вставьте приведенный выше код в Вашу программу (например. в обработчик нажатия на кнопку), откомпилируйте и запустите её. После чего, откройте какой-нибудь текстовый документ, выделите фрагмент текста в нем (желательно небольшой), и нажмите комбинацию клавиш «Ctrl+С». Нажмите на кнопку (к которой привязан обработчик с фрагментом приведенного выше кода.

А ниже, я привожу фрагмент кода, который вставляет в буфер обмена текст: «Тест из программы«.

 
//Помещаем нужный нам текст в буфер обмена (обратите внимание, перед размещением нового текста, содержимое буфера обмена удаляется из него)
Clipboard.SetText("Текст из программы");  

Я думаю что Вы без проблем разберетесь с тем, как использовать данный код в своей программе… Собственно вот и вся базовая информация, которую нужно знать, чтобы начать работать с буфером обмена в своих программах на C#.

Добавить комментарий