// <copyright file="ClipBoardManager.cs" company="Automate The Planet Ltd."> // Copyright 2016 Automate The Planet Ltd. // Licensed under the Apache License, Version 2.0 (the "License"); // You may not use this file except in compliance with the License. // You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // </copyright> // <author>Anton Angelov</author> // <site>http://automatetheplanet.com/</site> using System.Windows.Forms; namespace ImplementCopyPaste { public class ClipBoardManager<T> where T : class { public static T GetFromClipboard() { T retrievedObj = null; var dataObj = Clipboard.GetDataObject(); var format = typeof(T).FullName; if (dataObj.GetDataPresent(format)) { retrievedObj = dataObj.GetData(format) as T; } return retrievedObj; } public static void CopyToClipboard(T objectToCopy) { var format = DataFormats.GetFormat(typeof(T).FullName); IDataObject dataObj = new DataObject(); dataObj.SetData(format.Name, false, objectToCopy); Clipboard.SetDataObject(dataObj, false); } public static void Clear() { Clipboard.Clear(); } } }