Winform窗體縮放下使用剪切板功能出現(xiàn)頁面閃動解決分析
更新時間:2023年11月02日 11:02:29 作者:點墨
這篇文章主要介紹了Winform窗體縮放下使用剪切板功能出現(xiàn)頁面閃動解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
問題
Winform窗體,在首次使用剪切板功能時會出現(xiàn)頁面閃動。
原因
使用了PresentionCore.dll里的Clipboard導致的,具體原因未知
解決
使用其他方法進行剪切板功能,比如WindowAPI,F(xiàn)orms的Clipboard
演示代碼
MyClipboard.cs
using System; using System.Runtime.InteropServices; namespace WindowsFormsApp2 { class MyClipboard { [DllImport("User32")] public static extern bool OpenClipboard(IntPtr hWndNewOwner); [DllImport("User32")] public static extern bool CloseClipboard(); [DllImport("User32")] public static extern bool EmptyClipboard(); [DllImport("User32")] public static extern bool IsClipboardFormatAvailable(int format); [DllImport("User32")] public static extern IntPtr GetClipboardData(int uFormat); [DllImport("User32", CharSet = CharSet.Unicode)] public static extern IntPtr SetClipboardData(int uFormat, IntPtr hMem); public static void FormsCopy() { System.Windows.Forms.Clipboard.SetDataObject("Forms"); } public static void PresentationCoreCopy() { System.Windows.Clipboard.SetDataObject("PresentationCore"); } public static void Win32Copy() { if (!OpenClipboard(IntPtr.Zero)) { return; } EmptyClipboard(); SetClipboardData(13, Marshal.StringToHGlobalUni("Win32")); CloseClipboard(); } } }
Form1.cs
using System; using System.Collections; using System.Collections.Concurrent; using System.Configuration; using System.IO; using System.Text; using System.Windows.Forms; using System.Text.RegularExpressions; using System.Diagnostics; using System.Drawing; using System.Threading; namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.WindowState = FormWindowState.Normal; } private void button1_Click(object sender, EventArgs e) { MyClipboard.FormsCopy(); } private void button2_Click(object sender, EventArgs e) { MyClipboard.PresentationCoreCopy(); } private void button1_Click_1(object sender, EventArgs e) { MyClipboard.Win32Copy(); } } }
演示效果
以上就是Winform窗體縮放下使用剪切板功能出現(xiàn)頁面閃動解決分析的詳細內(nèi)容,更多關(guān)于Winform窗體縮放的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
WPF實現(xiàn)繪制統(tǒng)計圖(柱狀圖)的方法詳解
這篇文章主要為大家詳細介紹了如何基于WPF實現(xiàn)實現(xiàn)統(tǒng)計圖(柱狀圖)的繪制,文中的示例代碼簡潔易懂,對我們學習WPF有一定幫助,感興趣的可以了解一下2022-07-07c#使用filesystemwatcher監(jiān)視文件系統(tǒng)的變化
對于一個文件夾的改變,C#這邊有自己的類來實現(xiàn),我們不需要關(guān)心它的內(nèi)部實現(xiàn)機制,不需要關(guān)心它底層調(diào)用哪些API,我們只需要關(guān)心如何去調(diào)用它,如何讓它幫助我們記錄文件夾的修改情況即可,下面我們就實現(xiàn)它2014-01-01C#值類型、引用類型中的Equals和==的區(qū)別淺析
這篇文章主要介紹了C#值類型、引用類型中的Equals和==的區(qū)別淺析,本文分別對C#值類型和引用類型中的Equals和==做了講解和給出了實例,需要的朋友可以參考下2015-01-01