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)容,更多關于Winform窗體縮放的資料請關注腳本之家其它相關文章!
相關文章
C#中判斷本地系統(tǒng)的網(wǎng)絡連接狀態(tài)的方法
C#中一般通過InternetGetConnectedState函數(shù)返回本地系統(tǒng)的網(wǎng)絡連接狀態(tài),下面簡單介紹下,需要的朋友可以參考下2013-10-10

