• 締切済み

リッチテキストボックスで、クリップボードに影響なく、削除したいのですが

リッチテキストボックスで、クリップボードに影響なく、削除したいのですが・・・ C++/CLI、.NET環境でプログラミングを勉強しています。 richTextBox->cut()メソッドでも文字は削除されるのですが、クリップボードにその文字がコピーされてしまいます。 クリップボードに影響を与えず、文字を削除したいのですが、どのような方法がありますか? richTextBoxクラスのメンバを見ましたが、それにあたるメンバ関数が見つかりませんでした。 (T_T) 見落としているだけでしょうか?英語がわからないので、よけい苦労しています。 誰か、詳しい方お願いします。

みんなの回答

回答No.5

 こんにちは。補足頂きました。  まあ、String::Emptyと""にまつわる話は、検索をすると重箱の隅を突っつく話が出てくるのですが、  http://dobon.net/vb/dotnet/string/isempty.html  http://blogs.wankuma.com/shuujin/archive/2008/04/21/134497.aspx  そもそも、ハイライト中の文字列を消すのが目当てですから、どちらでも大丈夫だと思うんですけどねぇ。  以下のいずれでも判定出来ているので、特に気にする事は無い様な。 this->richTextBox1->SelectedText = ""; if(this->richTextBox1->SelectedText->Length == 0) { System::Windows::Forms::MessageBox::Show("ok"); } if(this->richTextBox1->SelectedText == "") { System::Windows::Forms::MessageBox::Show("ok"); } if(this->richTextBox1->SelectedText == String::Empty) { System::Windows::Forms::MessageBox::Show("ok"); }

回答No.4

 しまった。以下のプロパティで出来る筈です。  http://msdn.microsoft.com/ja-jp/library/system.windows.forms.richtextbox.selectedtext(v=VS.80).aspx  this->richTextBox1->SelectedText = String::Empty;

19740828
質問者

お礼

親切なごしどうありがとうございます!! リンクも見させていただきましたが、「""」と「String:Empty」に特に違いはなさそうですね。 勉強になりました。ありがとうございました!!

19740828
質問者

補足

回答ありがとうございます!! richTextBox->SelectedText = ""; の一文で、できたのですが、何か注意点はありますか?

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

選択した文字だけを消したいということなら、Cut前のClipboardオブジェクトの中身を保存しておいてCutのあとに書き戻すのが恐らく最も楽でしょう。 http://www.atmarkit.co.jp/fdotnet/dotnettips/152getclipbrd/getclipbrd.html http://www.atmarkit.co.jp/fdotnet/dotnettips/158setclpbrd/setclpbrd.html Expressだろうが.NETを使う限り中身は一緒です。同じようにMSDN Libraryは使えますよ?

19740828
質問者

補足

回答ありがとうございます。 クリップボードのアクセス方法がよくわかります。 ですが、RichTextBoxプロパティーは、クリップボードの操作を直接することなく、編集ができるようなので、その方法でやってみたいと思います。

回答No.2

 こんばんは。  バックスペースが押された事にしてみましょう。これで消せる筈です。  //リッチテキストの文字をハイライトにしたら、以下を実行する  System::Windows::Forms::SendKeys::Send("{BACKSPACE}");

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

空っぽにしたいだけなら、Textプロパティに空文字列設定してやればいいだけなのでは? あと、MSDN Libraryには日本語版ありますけど。

参考URL:
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.richtextbox(VS.80).aspx
19740828
質問者

補足

Textプロパティーに""を設定すると、ハイライトの文字以外の文字も消えてしまいますよね。 そうではなく、ハイライトになった文字だけ削除したいのです。 あと、自分のMSDN Libraryの事は詳しくわからないのですが、自分の環境は、Visual C++ 2008 Express Editionなんです。 ヘルプで探せるんでしょうか?

関連するQ&A

  • クリップボードについて。

    既存のExcelファイルを開き、1シート全てをクリップボードにコピーし、 テキストボックスに貼り付けるという動作をさせたいのですが、 クリップボードを貼り付ける際に以下のようなメッセージが表示されます。 --------------------------------------------------------------------- クリップボードに大きな情報があります。この情報をほかのプログラムに貼り付けられるようにしますか? ・後で貼り付けるためにクリップボードに保存する場合は、[はい]をクリックします。 ・クリップボードにある情報を削除する場合は、[いいえ]をクリックします。 --------------------------------------------------------------------- このメッセージは表示させたくないのですが、非表示にすることはできますか?

  • VB 2005 リッチテキストボックス 文字選択

    Visual Basic 2005 Express Editionを使っています。 趣味程度以下のレベルです。よろしくお願い致します。 質問の内容は、リッチテキストボックスの内容を選択(反転表示)して クリップボードに記憶させるコードを知りたいのです。 今、作っているのは、 Formの真ん中に、大き目のリッチテキストボックスを配置して 下にボタンを3つ配置しています。 ボタン1は (1)テキストボックスに"c:\mail\aaa.txt"を表示する。 (2)Cドライブのmailフォルダからaaa.txtをリッチテキストボックスに表示。 TextBox1.Text = "c:\mail\aaa.txt" RichTextBox1. LoadFile(TextBox1.Text, RichTextBoxStreamType.PlainText) と言うふうにしています。 同様に、ボタン2は bbb.txtをリッチテキストボックスに表示、 ボタン3はccc.txtをリッチテキストボックスに表示するようにしています。 使用方法としては、取引先とメールのやり取りを行う際に、 メールのパターンが3種類あって、これまでは、aaa.txtをメモ帳で 開いてはコピペしてメーラーに貼り付け。bbb.txtをメモ帳で開いては メーラーに貼り付け。を繰り返していました。 クリップボードに記憶させるのは、 Clipboard.SetDataObject(RichTextBox1.SelectedText) で、うまく行きましたが、クリップボードに記憶させる文字の選択は 手動でやっています。 また、文字の選択というのは、リッチテキストボックスに表示された、 文字を抜き出して選択するわけではなくて、表示されている全てを 選択(反転文字)にしたいのです。 わかりにくい説明で申し訳ありませんが、よろしくお願い致します。

  • クリップボードの中身のペースト

    クリップボードの中身をペーストしたいと思っています。 テキストをクリップボードに写して それをテキストボックスに入れたいのですが、 どうすればいいのでしょうか? 記述の仕方がよくわかりません。 教えてください。

  • テキストボックスに入力された内容をクリップボードにコピー

    プログラミング初心者です。少し教えていただけないでしょうか? 3*3で配置したテキストボックスに入力された内容をクリップボードにコピーするツールを作ろうと思っています。  受付番号  名前    備考 1[TextboxA1][Textbox12][Textbox13] 2[TextboxA2][Textbox22][Textbox23] 3[TextboxA3][Textbox32][Textbox33] [実行ボタン] 受付番号は入力の簡素化のため"No."という文字列を入力したいと思っています。もっと効率的な方法があると思いますが 実行ボタンを押したときに下記のプログラムを実行すれば 一応クリップボードにコピーできることが分かりました。 Dim MsgAll as string MsgALL = "No." & Textbox1.text & Textbox12.text & Textbox13.text & vbCrLf &TextboxA2.text (以下Textbox33.textまで) Clipboard.SetDataObject(MsgAll) ただし、3*3のテキストボックスは必ずしも全て入力されるわけではないので空白行の場合はその行をジャンプしたいのです。 各行の受付番号のテキストボックスに入力があるかどうかを判断させて空白だった場合はクリップボードにコピーさせなければよいのでは?と考えています。 色々ネットで調べた結果あらかじめ各行の内容を配列に代入しておき、 テキストボックスのコントロール名を取得してFOR文で処理を繰り返す方法を考えました。 lines(1) = "No." & TextboxA1.text & Textbox12.text & Textbox13.text & vbCrLf lines(2) ="No." & TextboxA2.text & Textbox22.text & Textbox23.text & vbCrLf lines(3) ="No." & TextboxA3.text & Textbox32.text & Textbox33.text & vbCrLf  For i = 1 To 3   ControlName = "TextBox_top" & i   If Me.Controls(ControlName).Text = "" Then    Else     MsgAll = MsgAll + lines(i)     Clipboard.SetDataObject(MsgAll) End If Next 以上のようなプログラムで動くかどうか不安でしたので 新たにプロジェクトを作り直し試みたところ動作したので ほんとうのプログラムにこの部分のロジックを組み込んで動作させたところ ”オブジェクト参照がオブジェクト インスタンスに設定されていません。”のエラーが返り正常に動作しませんでした。 テキストボックス名などがテストプログラムなどとは異なりますが 他に異なる部分はありません。 なぜこのようなエラーが発生してしまうのでしょうか? また、もっと効率のよい方法がある場合はその方法もご教示願えないでしょうか? 大変お手数ですがよろしくお願いいたします。

  • リンクからクリップボードへコピー

    JavaScript で、クリップボードへテキストを送る方法がありました。 それが以下のようなものですが、 <input type="button" value="クリップボードへ送る" onClick='window.clipboardData.setData("text","テキスト文字")'> これだとボタンを押す時にのみクリップボードへ送られますが、 URL 先へのリンクをクリックしたら、クリップボードコピーできるように したいのです。可能でしょうか。

  • WORDのクリップアートをテキストボックス内に挿入するにはどうしたらいいですか?

    WORDのクリップアートをテキストボックス内に挿入しようとするのですが、目的の場所にうまく図を挿入しきれません。テキストボックス内の他の文字を連動してしまいます。よい方法はないでしょうか?又、クリップアート以外から図を探したいのですが、そういうサイトをご存知の方教えてください。WORD2002、XPです。

  • テキストエリアに書き込んだデータをクリップボードにコピーする方法

    <input type = "text" name = "namae">として、テキストエリア入力した文字を クリップボードにコピーする方法はありますでしょうか? できれば、『送信』ボタンを押すと同時にクリップボードに貼り付けたいです。 よろしくお願いします。

  • もうひとつクリップボードが欲しい

    現状、コピーカットペースト(Ctrl+C、X、V)でひとつのクリップボードを使っていますが、これをもうひとつ増やすことはできないのでしょうか。もしくは増やすソフトというのは無いのでしょうか? キーの配置とかではなく、 Ctrl+Cで「AAAA」をコピーしてる場合、Ctrl+Vで「AAAA」をペースト これに加えて別途で Ctrl+αで「BBBB」をコピーして、Ctrl+βで「BBBB」をペースト 連続で、Ctrl+V→Ctrl+βで「AAAA」「BBBB」がペースト テキスト編集上でよくコピペを使うのですが、ひとつだと中々不便で。 クリップボード拡張ツールというのは多くあるのですが、一々他の操作(Shift連打や別窓起動など)が必要になり、テキスト編集以外の作業(ファイル名のリネーム作業など)の場合だと不便です。 そこで思ったのですが、クリップボードを単純にもうひとつ用意はできないのでしょうかor用意できるようなソフトはないのでしょうか? 心当たりのある方、ぜひとも教えて下さい。 ひとまずクリップボード拡張(履歴拡張)や入力支援系のソフトは既に色々試してるのでこちらのジャンルに関してはスルーでお願いします。

  • クリップボードの内容をファイルに自動保存するツール

    テキストファイル内の文字列を、コピーやカットしたときに自動的にクリップボードの内容をファイルに追加保存してくれるようなツールはないでしょうか?

  • リッチテキストボックス内のフォント変更

    VB.NETプログラミングしています。 基礎的なことだと思うのですが、 調べてもわかりませんのでご教示ください。 RichTextBoxを使ってテキストエディタを作っています。 このリッチテキストボックス内でキーダウンイベントを発生させ、 選択されている文字のフォント変更(例えばボールド体やイタリック体、下線付加)したいのですができません。 ワードのような機能を付加したいだけなのですが、うまくいきません。 つまり、 If e.Control = True Then  With RichTextBox1   Select Case e.KeyCode     Case Keys.B   (選択されている文字をボールド体にして、    ボールド体の部分は非ボールド体にする) End Select End With EndIf の中の 「選択されている文字をボールド体にして、ボールド体の部分は非ボールド体にする」という処理ができません。 ご存知の方、ご教示ください。