当前位置:编程学习 > C#/ASP.NET >>

使用剪贴板保存自定义对象

 技术要点:
放置到剪贴板上的对象必须是可序列化的。
剪贴板接收一个实现了IDataObject接口的对象,可以用此对象“包装”具体的数据对象。
可以多次调用IDataObject. SetData方法将多种类型的对象复制到剪贴板中。在获取剪贴板中的数据时通过DataFormat进行识别
在进行粘贴之前,需要确保剪贴板上的数据是所需要的格式。



 

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Drawing; 
using System.Runtime.Serialization; 
 
namespace UseClipboard 

    [Serializable] 
    class MyPic 
    { 
        public Image pic;       //图片 
        public string picInfo;  //图片信息说明 
    } 

 
 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
 
namespace UseClipboard 

    public partial class frmMain : Form 
    { 
        public frmMain() 
        { 
            InitializeComponent(); 
        } 
        //图片 
        private Image bmp 
        { 
            get 
            { 
                return pictureBox1.Image; 
            } 
            set 
            { 
                pictureBox1.Image = value; 
            } 
        } 
        //图片说明 
        private string info 
        { 
            get 
            { 
                return txtImageInfo.Text; 
            } 
            set 
            { 
                txtImageInfo.Text = value; 
            } 
        } 
 
        private void btnLoadPic_Click(object sender, EventArgs e) 
        { 
            ChooseImageFile(); 
        } 
 
        //选择图片 www.zzzyk.com  
        private void ChooseImageFile() 
        { 
            if (openFileDialog1.ShowDialog() == DialogResult.OK) 
            { 
                string name = openFileDialog1.FileName; 
                txtImageInfo.Text = name; 
                bmp = new Bitmap(name); 
            } 
        } 
        //根据用户设定的信息创建对象 
        private MyPic CreateMyPicObj() 
        { 
            MyPic obj = new MyPic(); 
            obj.pic = bmp; 
            obj.picInfo = info; 
            return obj; 
        } 
 
        //将对象复制到剪贴板上 
        private void CopyToClipboard() 
        { 
            //创建MyPic对象 
            MyPic obj = CreateMyPicObj(); 
 
            //创建一个数据对象,将MyPic类型的对象装入 
            IDataObject dataobj = new DataObject(obj); 
 
            //其它类型的数据也可以装入到数据对象中 
            dataobj.SetData(DataFormats.UnicodeText, info); 
            dataobj.SetData(DataFormats.Bitmap, bmp); 
 
            //复制到剪贴板上,第二个参数表明程序退出时不清空剪贴板 
            Clipboard.SetDataObject(dataobj,true ); 
        } 
 
        private void btnExit_Click(object sender, EventArgs e) 
        { 
            Close(); 
        } 
 
        private void btnCopyToClipboard_Click(object sender, EventArgs e) 
        { 
            CopyToClipboard(); 
        } 
 
        //从剪贴板获取数据 
       

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,