GJAX IS UNDER CONSTRUCTION! (※日本語ブログ)

Please wait a minute for GJAX/2008

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  171  : 記事  0  : コメント  392  : トラックバック  50

ニュース

今後のスケジュールについて

予定なし

インフォメーション

わんくま同盟メンバ ブログ トップ

ブログタイトル(July 2007~)
GSP.NET GJAX!
【読み方:じーえすぴーどっとねっと/じーじゃっくす】
【サブ:~ A C# programmer dives into ASP.NET! ~】

ASP.NET AJAXと違って、GSP.NET [ghost_shell's (web) pages & .NET]の部分が正式名称、GJAX!の部分が省略形・俗語となっています。

過去のブログタイトル
【表記:ウェブ100】
【読み方:うぇっぶいちまるまる】
【サブ:.Net & Webに てん ぜろ】

書庫

日記カテゴリ

カテゴリ:.Net Framework

月曜に最低アクセス数(7/9~)を記録し、火曜持ち直しました。
昨日(水曜)はさらに増えたのですが、コメントは付きませんでした。
#反応がつきにくいのは分かっていますが、ちょっと悲しいです。

それでもフォローアップはしていきます。

起点となったエントリでは「RichTextBoxを使ってテキスト修正(文字列置換)のプレビュー機能を作れます」
続きのエントリでは「RichTextBox中の部分文字列の位置指定の挙動が思った通りではありませんでした」
といった内容で書きました。

原因について、RichTextBoxでは改行は目に見える文字ではないので文字数をカウントしていない、と推理してみました。

とりあえず以下のコードに書き換えて動かしてみました。(上が前回のコード、下が新しいコード)

Match match = new Regex("t").Match(richTextBox_Preview.Text);
while (match.Success)
{
    richTextBox_Preview.Select(match.Index, match.Length);
    richTextBox_Preview.SelectionColor = Color.Red;
    match = match.NextMatch();
}

Match match = new Regex("t").Match(richTextBox_Preview.Text.Replace("\n", ""));
while (match.Success)
{
    richTextBox_Preview.Select(match.Index, match.Length);
    richTextBox_Preview.SelectionColor = Color.Red;
    match = match.NextMatch();
}

非検索文字列から改行を取り除いて文字列検索しています。
richTextBox_Preview.Text.Replace("\n", "") しても richTextBox_Preview.Text は上と変わっていないこと[改行入りのまま]に注意してください。

これはうまくいきます。実際の文字列と違うことになっていますが、行数を調べなくていいので、場合によってはかなり有用です。

開始位置を補正する方法も考えてみました。

Match match = new Regex("t").Match(richTextBox_Preview.Text);
while (match.Success)
{
    richTextBox_Preview.Select(ToRTBIndex(richTextBox_Preview, match.Index), match.Length);
    richTextBox_Preview.SelectionColor = Color.Red;
    match = match.NextMatch();
}

ToRTBIndexメソッドは以下になります。

public int ToRTBIndex(RichTextBox rtb, int matchindex)
{
    int rtbindex = matchindex - rtb.GetLineFromCharIndex(matchindex);
    while (rtbindex + rtb.GetLineFromCharIndex(rtbindex) < matchindex)
        rtbindex++;
    return rtbindex;
}

注意が必要なのはRichTextBoxの設定です。
これを使う場合はWordWrap(右端で改行するかどうか)をFalseにしておく必要があります。
Trueで試していて「自動改行されていないのにな~。おかしいな~。」と思ったら、400ピクセル四方のウィンドウをデバッグごとに手動で最大化していたことに気づかなかった、なんてことがありました。

参考にどうぞ  TextBox(またはRichTextBox)の現在のカレット位置(行と列)を取得する (DOBON.NET)

 

#【アンケート】 仕事中、プログラミング中、何を飲んでいますか。
#お茶(←ペットボトル飲料)が多いです。コーヒー(←インスタントコーヒー)も飲みますが、コーヒーばっかりはないですかね。
#利尿作用があるといわれていますが、トイレに行くと気分転換になるので支障はありません。

投稿日時 : 2007年8月16日 12:58

コメント

# re: GetLineFrom「茶~。」Index 色付き置換3 2007/08/16 13:14 中博俊
あんまり細かいフィードバックやPVばっか見てても仕方ないよ。

# re: GetLineFrom「茶~。」Index 色付き置換3 2007/08/16 13:21 のん@琉希唖
ちなみに私は仕事中、コンビニで売ってる100円の紙パックのリプトンシリーズを飲んでいます。
#安いし美味しいんで

# re: GetLineFrom「茶~。」Index 色付き置換3 2007/08/16 13:34 επιστημη
茶を語ると長くなるので省略 ^^;

# re: GetLineFrom「茶~。」Index 色付き置換3 2007/08/16 13:57 まさる
朝一はホットコーヒーっす。なんとなく頭がシャッキリするので。
その後は紅茶とかコーヒーとかをちょこちょこと。


# re: GetLineFrom「茶~。」Index 色付き置換3 2007/08/16 16:12 片桐
常に一日最低2リットルの水分がノルマです(笑)
すぐに脱水症状起こしちゃうので(笑)

# re: GetLineFrom「茶~。」Index 色付き置換3 2007/08/17 9:59 ghost_shell
中 さん

気遣いありがとうございます。(大丈夫です)
先週末~月曜こそ少なかったものの、週の真ん中を過ぎてみれば他の週と比べてPVカウントは多い方でした。

まぁ目安ってことで。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
のん@琉希唖 さん

美味しいですよね。
#話されているものとサイズは違うと思いますが、「1L紙パック100円ちょっと」って安い気がしますが、「2L200円」と考えると高いと思ってしまいます。
#それでいて、1Lを買ってくると糖分がちょっと気になったりします。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
επιστημη 先生
>茶を語ると長くなるので省略 ^^;

ですね。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
まさる さん

うらやましく思えてきました。会社にはティーパックがないんで、今度持参しようかな。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
片桐 さん

大量に飲み物を飲むことができない人にとってはきついでしょうね。
今の季節、家に帰ってからの間だけで氷水を1リットルくらい飲んでいるかもしれません(笑)

#氷水を飲むのは小さい頃からやっていますね。水分の補給よりも体温を下げる目的の方が大きかったりします。

# 色付き置換4 2007/08/17 19:28 "ウェブ100" は "GSP.NET GJAX!"に変わり
色付き置換4

Post Feedback

タイトル
名前
Url:
コメント: