时间:2021-05-20
最近做一个C#项目,需要用到线程,而且要用到剪切板,创建了一个子线程之后发现在子线程中剪切板上获取不到数据,经过一番查找与测试最终该问题得以解决,现将解决方法归纳如下,供大家参考:
第一步:
public void btnAutoFocus_Click(object sender,EventArgs e){Thread myThread = new Thread(msc.AutoFocusArithmetic);//注意,一般启动一个线程的时候没有这句话,但是要操作剪切板的话这句话是必需要加上的,//因为剪切板只能在单线程单元中访问//这里的STA就是指单线程单元myThread .SetApartmentState(ApartmentState.STA); myThread .Start();}第二步:还需要将Program启动类中
static class Program{////// 应用程序的主入口点。///[STAThread] //这句话保留,如果要在主线程中访问剪切板,这句式必须要的//如果要在子线程中访问剪切板,这个应该可以不要,但是默认是有的static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new MainForm());//Application.Run(new TestRGBPixelThumbForm());//Application.Run(new TestImageForm());//Application.Run(new TestJudgeDefinitionForm());//Application.Run(new TestVirusForm());}}第三步:这个是读取剪切板数据
private Image GetCaptureImage(){IDataObject iData = Clipboard.GetDataObject();Image img = null;if (iData != null){if (iData.GetDataPresent(DataFormats.Bitmap)){img = (Image)iData.GetData(DataFormats.Bitmap);}else if (iData.GetDataPresent(DataFormats.Dib)){img = (Image)iData.GetData(DataFormats.Dib);}}return img;}至此问题得以解决。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文介绍了如何使用VisualC#操作剪切板的方法,讲的非常到位,大家如果想用C#操作剪切板,不妨参照一下这个文章。VisualC#是微软.Net框架中的一个重
以下共有4个函数分别是:1.从剪切板获得文字。2.将字符串复制到剪切板。3.从剪切板获得图片。4.复制图片到剪切板。/***从剪切板获得文字。*/publics
本文实例讲述了C#编程实现查看剪切板内容的方法。分享给大家供大家参考,具体如下:usingSystem;usingSystem.Collections.Gene
C#剪切板Clipboard类我们现在先来看一下官方文档的介绍位于:System.Windows.Forms命名空间下Providesmethodstoplac
剪切板是Windows系统中自带一个非常好用的工具,通过这个小小的剪切板,我们可以进行复制、粘贴、剪切操作,轻松做到传递和共享信息。那么,Win10剪切板在哪?