テキストエディター
投稿者 ラオシス  (中学生)
投稿日時
2011/12/5 20:30:57
とりあえずソースぐらいは書いてみましょうか。
丸投げは一番良くありません。ソースを書いてといっても書いてくれる人はあまりいませんよ?
自分で努力してそのあと質問すべきです。
RichTextBoxに関してあまり触ったことがないので何とも言えませんが
部分的に色やフォントなどを変えて,文字列を装飾して表示する(RichTextBoxクラス)
http://itpro.nikkeibp.co.jp/article/COLUMN/20060926/249031/
RichTexBoxについて
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=9997
>あと、改行されたときにその行にifなどの特定の文字が入力されていた場合に自動的に次の行に空白>を開けその次の行にendを書き、空白の行の最後にカーソルを戻す方法があったらそれも教えてくださいorz
つまりVBの
というような感じですか?
すこし自分の方でもRichTextBoxに関して触ってみたい気になりました
少しだけでもコードを書いて、そこでわからないところがあればまた質問してください^^
丸投げは一番良くありません。ソースを書いてといっても書いてくれる人はあまりいませんよ?
自分で努力してそのあと質問すべきです。
RichTextBoxに関してあまり触ったことがないので何とも言えませんが
部分的に色やフォントなどを変えて,文字列を装飾して表示する(RichTextBoxクラス)
http://itpro.nikkeibp.co.jp/article/COLUMN/20060926/249031/
RichTexBoxについて
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=9997
>あと、改行されたときにその行にifなどの特定の文字が入力されていた場合に自動的に次の行に空白>を開けその次の行にendを書き、空白の行の最後にカーソルを戻す方法があったらそれも教えてくださいorz
つまりVBの
If True Then 'ここで改行する
'次にここにカーソル
End If
というような感じですか?
すこし自分の方でもRichTextBoxに関して触ってみたい気になりました
少しだけでもコードを書いて、そこでわからないところがあればまた質問してください^^
投稿者 さなだ丸  (社会人)
投稿日時
2011/12/6 10:35:34
>リッチテキストボックスにIfなどの特定の文字を入力されたときに、その文字だけを青くする
というのなら、
リッチテキストボックスの入力を常に監視して(Change系のイベントとかでチェックするとか)
Ifなどの特定の文字が入力された場合はその文字を青くすればいいのでは?
>改行されたときにその行にifなどの特定の文字が入力されていた場合に自動的に次の行に空白を開けその次の行にendを書き、空白の行の最後にカーソルを戻す
これも、同様のチェックで改行が入った時に、特定の文字をチェックして改行コードとendという文字と課入れるなどすればいいんでないか?
フォーカスを空白行に持ってくるのはちょいと考えないと上手くいかないかもしれないけど。
というのなら、
リッチテキストボックスの入力を常に監視して(Change系のイベントとかでチェックするとか)
Ifなどの特定の文字が入力された場合はその文字を青くすればいいのでは?
>改行されたときにその行にifなどの特定の文字が入力されていた場合に自動的に次の行に空白を開けその次の行にendを書き、空白の行の最後にカーソルを戻す
これも、同様のチェックで改行が入った時に、特定の文字をチェックして改行コードとendという文字と課入れるなどすればいいんでないか?
フォーカスを空白行に持ってくるのはちょいと考えないと上手くいかないかもしれないけど。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2011/12/6 12:15:12
# 回答に非ず。
RichTextBox (COM 版あるいは .NET 版)でエディタ機能を実装されているソフトも
幾つかありますが、その実装は意外と大変だったりします。
http://www.geocities.jp/hatanero/vb.html
http://www.geocities.jp/hatanero/richtextnet1.html
そもそも RichTextBox は、入力中の動的な色付けに対応させにくいコントロールです。
これは色を変える範囲を指定する際に、対象文字列を選択状態にする必要があるためです。
そのため、標準コントロールの利用は諦め、エディタコントロール自体を
自前で一から生成される道を選ぶ猛者もおられます。
http://www.kanazawa-net.ne.jp/~pmansato/net/net_make_texteditor.htm
とはいえ、RichTextBox が全く使えないというわけでもありません。たとえば
表示用の RichTextBox とは別に、RTFコードを生成させるための編集作業用として
非表示の RichTextBox を用意するとか、あるいは RTFコードそのものを直接
自前で構築するなどすれば、ある程度は対処可能です(簡単かどうかは別にして)。
ですが入力中にリアルタイムに色を付けるほどの応答性能を稼ぐとなると、
データが長文になるほど苦労するであろうとは思います。
また、(Word 等でもそうですが)着色した単語のすぐ後から入力すると、
入力した文字の書式が、直前の文字の書式に自動的に引きずられてしまう点も
実装を難しいものにしています。
リアルタイムな着色にそこまで手間をかけたくないような場合には、
Azuki や Footy2 などといった、出来合いのエディタコントロールを
試してみるのも良いかもしれません。
http://www.r-nakai.com/archives/257
http://sgry.jp/pgarticles/cs_editor_component.html
http://d.hatena.ne.jp/gsf_zero1/20080215/p1
RichTextBox (COM 版あるいは .NET 版)でエディタ機能を実装されているソフトも
幾つかありますが、その実装は意外と大変だったりします。
http://www.geocities.jp/hatanero/vb.html
http://www.geocities.jp/hatanero/richtextnet1.html
そもそも RichTextBox は、入力中の動的な色付けに対応させにくいコントロールです。
これは色を変える範囲を指定する際に、対象文字列を選択状態にする必要があるためです。
そのため、標準コントロールの利用は諦め、エディタコントロール自体を
自前で一から生成される道を選ぶ猛者もおられます。
http://www.kanazawa-net.ne.jp/~pmansato/net/net_make_texteditor.htm
とはいえ、RichTextBox が全く使えないというわけでもありません。たとえば
表示用の RichTextBox とは別に、RTFコードを生成させるための編集作業用として
非表示の RichTextBox を用意するとか、あるいは RTFコードそのものを直接
自前で構築するなどすれば、ある程度は対処可能です(簡単かどうかは別にして)。
ですが入力中にリアルタイムに色を付けるほどの応答性能を稼ぐとなると、
データが長文になるほど苦労するであろうとは思います。
また、(Word 等でもそうですが)着色した単語のすぐ後から入力すると、
入力した文字の書式が、直前の文字の書式に自動的に引きずられてしまう点も
実装を難しいものにしています。
リアルタイムな着色にそこまで手間をかけたくないような場合には、
Azuki や Footy2 などといった、出来合いのエディタコントロールを
試してみるのも良いかもしれません。
http://www.r-nakai.com/archives/257
http://sgry.jp/pgarticles/cs_editor_component.html
http://d.hatena.ne.jp/gsf_zero1/20080215/p1
投稿者 ugonight  (中学生)
投稿日時
2011/12/6 18:06:42
皆さんありがとうございますっ!
実はコード全然書いてないんですね…
選択した文字に色をつけるのは
とすればいいのはわかるんですが任意の文字を探してその色の文字を変えるというのがわからないんです…
着色のタイミングはTextChangedメゾットでOKですかね…
そこまで急ぎじゃなくてもいいので…
自動で改行する方法もカーソルを移動する方法もわかんないんです…
考え方はわかるんですけど…
実はこのサイトのスクリプトエディターが不便なので、自動的に余白を入れて文型を整えられたりできるプログラムが作りたいんです☟
http://rmake.jp/
いつもコードばっかり要求してしまうのは反省します。
いろいろ調べてもわからなくて…
実はコード全然書いてないんですね…
選択した文字に色をつけるのは
RichTextBox1.SelectionColor = Color.Blue
とすればいいのはわかるんですが任意の文字を探してその色の文字を変えるというのがわからないんです…
着色のタイミングはTextChangedメゾットでOKですかね…
そこまで急ぎじゃなくてもいいので…
自動で改行する方法もカーソルを移動する方法もわかんないんです…
考え方はわかるんですけど…
実はこのサイトのスクリプトエディターが不便なので、自動的に余白を入れて文型を整えられたりできるプログラムが作りたいんです☟
http://rmake.jp/
いつもコードばっかり要求してしまうのは反省します。
いろいろ調べてもわからなくて…
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2011/12/6 18:26:01
> 任意の文字を探してその色の文字を変えるというのがわからないんです…
正規表現(Regexクラス)やInStr 関数、あるいは String.IndexOf メソッド等を通じて、
該当する文字列の位置を調査するのが第一段階。
その位置を基に、RichTextBox の Select(start, length) メソッドもしくは
SelectionStart・SelectionLengthプロパティを呼び出して、該当する文字列を
選択状態にするのが第二段階。
最後に第三段階として、SelectionColor プロパティで色を確定させて完成です。
> 着色のタイミングはTextChangedメゾットでOKですかね…
メゾット ではなく
メソッド です。( Method )
> 自動で改行する方法もカーソルを移動する方法もわかんないんです…
上記にも少し書きましたが、カーソル移動は
・Select(start, length) メソッド
・SelectionStart・SelectionLengthプロパティ
のいずれかを使えば OK です。
長さ指定の方を 0 にすれば、start で指定した位置に入力カーソル(キャレット)が来ますし、
長さも指定すれば、そこから指定した文字数のテキストが選択状態になります。
また、改行については「RichTextBox1.SelectedText = ControlChars.NewLine」とすれば、
現在の位置に改行が埋め込まれます。(文字列を選択していた場合は、それらが改行に置き換わります)
ちなみに SelectedText プロパティとは、現在選択されている文字列を取得したり、
あるいはその選択されていたテキストを別の文字列に置き換えるためのものです。
正規表現(Regexクラス)やInStr 関数、あるいは String.IndexOf メソッド等を通じて、
該当する文字列の位置を調査するのが第一段階。
その位置を基に、RichTextBox の Select(start, length) メソッドもしくは
SelectionStart・SelectionLengthプロパティを呼び出して、該当する文字列を
選択状態にするのが第二段階。
最後に第三段階として、SelectionColor プロパティで色を確定させて完成です。
> 着色のタイミングはTextChangedメゾットでOKですかね…
メゾット ではなく
メソッド です。( Method )
> 自動で改行する方法もカーソルを移動する方法もわかんないんです…
上記にも少し書きましたが、カーソル移動は
・Select(start, length) メソッド
・SelectionStart・SelectionLengthプロパティ
のいずれかを使えば OK です。
長さ指定の方を 0 にすれば、start で指定した位置に入力カーソル(キャレット)が来ますし、
長さも指定すれば、そこから指定した文字数のテキストが選択状態になります。
また、改行については「RichTextBox1.SelectedText = ControlChars.NewLine」とすれば、
現在の位置に改行が埋め込まれます。(文字列を選択していた場合は、それらが改行に置き換わります)
ちなみに SelectedText プロパティとは、現在選択されている文字列を取得したり、
あるいはその選択されていたテキストを別の文字列に置き換えるためのものです。
投稿者 ugonight  (中学生)
投稿日時
2011/12/27 18:03:43
返信遅れちゃいましたすみませんっorz
ご親切にありがとうございます。
頑張ってやってみますっ
ご親切にありがとうございます。
頑張ってやってみますっ
もし、リッチテキストボックスにIfなどの特定の文字を入力されたときに、その文字だけを青くする方法を知ってる人がいたら教えてくださいっ!
あと、改行されたときにその行にifなどの特定の文字が入力されていた場合に自動的に次の行に空白を開けその次の行にendを書き、空白の行の最後にカーソルを戻す方法があったらそれも教えてくださいorz