C# で文字列 (例: "hello") をシステム クリップボードにコピーして、次に押すとCTRL+V"hello" が表示されるようにするにはどうすればよいですか?
ベストアンサー1
異なるアセンブリと異なる名前空間に存在する 2 つのクラスがあります。
WinForms: 次の名前空間宣言を使用し、属性
Main
でマークされていることを確認します[STAThread]
。using System.Windows.Forms;
WPF: 次の名前空間宣言を使用する
using System.Windows;
コンソール: への参照を追加し、次の名前空間宣言を使用し、属性でマークされていること
System.Windows.Forms
を確認します。別のステップバイステップガイドMain
[STAThread]
答えusing System.Windows.Forms;
正確な文字列(この場合はリテラル)をコピーするには:
Clipboard.SetText("Hello, clipboard");
テキストボックスの内容をコピーするには、テキストボックス.コピー()または、最初にテキストを取得してからクリップボードの値を設定します。
Clipboard.SetText(txtClipboard.Text);
例についてはこちらをご覧ください。 または...公式 MSDN ドキュメントまたはWPFはこちら。
備考:
クリップボードはデスクトップ UI の概念であり、ASP.Net などのサーバー側コードで設定しようとすると、サーバー上でのみ値が設定され、ユーザーがブラウザーで表示できる内容には影響しません。リンクされた回答では、サーバー側でクリップボード アクセス コードを実行できますが、
SetApartmentState
それが目的の成果となる可能性は低いです。この質問の情報に従ってもコードが例外になる場合は、文字列をクリップボードにコピーする際に「現在のスレッドはシングル スレッド アパートメント (STA) に設定する必要があります」というエラーが発生する
この質問/回答は通常の.NETを対象としており、.NET Coreについては以下を参照してください。.Net Core - クリップボードにコピーしますか?