C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

クリップボードにテキストを出力する方法

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■94679 / inTopicNo.1)  クリップボードにテキストを出力する方法
  
□投稿者/ ところてん (1回)-(2020/05/04(Mon) 15:49:55)

分類:[.NET 全般] 

クリップボードにテキストデータを出力したいのですが
以下のようなプログラムを作りました。

これでも動作してはいるのですが、
一度、テキストデータをバイト配列にしてから、再度テキストデータに戻しているので
二度手間な気がします。
もっと良い方法があればお教え願います。


        Dim stream As New MemoryStream


        Using writer As New IO.StreamWriter(stream, System.Text.Encoding.Default)
            writer.WriteLine("ああ")
        End Using


        Dim ByteData() As Byte = stream.ToArray
        stream.Close()


        Dim SetText As String = Encoding.Default.GetString(ByteData)

        Clipboard.SetText(SetText)

引用返信 編集キー/
■94680 / inTopicNo.2)  Re[1]: クリップボードにテキストを出力する方法
□投稿者/ Azulean (1148回)-(2020/05/04(Mon) 16:05:37)
2020/05/04(Mon) 16:06:11 編集(投稿者)

No94679 (ところてん さん) に返信
> 一度、テキストデータをバイト配列にしてから、再度テキストデータに戻しているので
> 二度手間な気がします。
> もっと良い方法があればお教え願います。

StringBuilder を用いてはいかがでしょうか?


var stringBuilder = new StringBuilder();
stringBuilder.AppendLine("あああ");

stringBuilder.AppendFormat("X={0}, Y={1}", 10, 20);
stringBuilder.AppendLine();

Clipboard.SetText(stringBuilder.ToString())


追記
C# で書いちゃったけど、VB.NET では Dim stringBuilder As New StringBuilder で書き始めたら、近い形で書けるとは思う。
引用返信 編集キー/
■94681 / inTopicNo.3)  Re[2]: クリップボードにテキストを出力する方法
□投稿者/ ところてん (2回)-(2020/05/04(Mon) 17:16:10)
ありがとうございます。

Using writer As New StringBuilder()

としようとすると

system.idisposable を実装しなければなりません。

というエラーが発生しますが
StringBuilderはUsingには対応していないのでしょうか?
Disposeが必要なのなら、Usingも使えても良いのにと思うのですが

引用返信 編集キー/
■94682 / inTopicNo.4)  Re[3]: クリップボードにテキストを出力する方法
□投稿者/ Hongliang (1020回)-(2020/05/04(Mon) 17:30:40)
StringBuilderはDisposeを持っていませんよ。
とくに破棄処理とかは必要ないです。
引用返信 編集キー/
■94683 / inTopicNo.5)  Re[4]: クリップボードにテキストを出力する方法
□投稿者/ ところてん (3回)-(2020/05/04(Mon) 23:17:12)
ありがとうございます。
そういうことでしたか

ちなみにStringBuilderではwritelineを使うことができないのでしょうか?
他のコードと互換性をもたせるために、
どうしてもwritelineを使いたいのですが

stringbuilder以外でできそうなものはございますでしょうか?

引用返信 編集キー/
■94684 / inTopicNo.6)  Re[5]: クリップボードにテキストを出力する方法
□投稿者/ KOZ (114回)-(2020/05/04(Mon) 23:28:42)
No94683 (ところてん さん) に返信
> 他のコードと互換性をもたせるために、
> どうしてもwritelineを使いたいのですが

「StringWriter クラス」
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.stringwriter

をどうぞ。
引用返信 編集キー/
■94685 / inTopicNo.7)  Re[5]: クリップボードにテキストを出力する方法
□投稿者/ Hongliang (1021回)-(2020/05/04(Mon) 23:28:54)
StringWriterというのがありますね。
StringBuilderに、TextWriterの皮をかぶせたクラスです。
引用返信 編集キー/
■94689 / inTopicNo.8)  Re[6]: クリップボードにテキストを出力する方法
□投稿者/ ところてん (4回)-(2020/05/05(Tue) 12:31:03)
ありがとうございます。

stringwriterが正に私が求めていたものでした。

ところで、Stringwriterは本当にstringbuilderのラッパーなのでしょうか?
stringbuilderは毎回新たにオブジェクトを生成しないため、
高速であるという記事は見つかったのですが
https://dobon.net/vb/dotnet/string/stringbuilder.html
stringwriterに関してはほとんど情報が見つかりませんでした。
これらは速度など本当に同じでしょうか?

あと、stringbuilderだとcapacityを引数として受けることができますが
stringwriterだとこれが見当たりません
ユーザーが指定することができないのでしょうか?
引用返信 編集キー/
■94690 / inTopicNo.9)  Re[7]: クリップボードにテキストを出力する方法
□投稿者/ 魔界の仮面弁士 (2707回)-(2020/05/05(Tue) 13:04:09)
No94689 (ところてん さん) に返信
> ところで、Stringwriterは本当にstringbuilderのラッパーなのでしょうか?

.NET Framework のソースコードは公開されていますので、
実装については、こちらで確認してみてください。
https://referencesource.microsoft.com/#mscorlib/system/io/stringwriter.cs
https://referencesource.microsoft.com/download.html
引用返信 編集キー/
■94691 / inTopicNo.10)  Re[7]: クリップボードにテキストを出力する方法
□投稿者/ 魔界の仮面弁士 (2708回)-(2020/05/05(Tue) 13:05:53)
No94689 (ところてん さん) に返信
> あと、stringbuilderだとcapacityを引数として受けることができますが
> stringwriterだとこれが見当たりません

StringWriter には、StringBuilder を引数として受け付けるコンストラクタがありますよ。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ