C#について質問です。


下記コードを実行すると変数「start」に指定された位置から左に検索されることを期待したのですが、実際には末尾の文字しかヒットしませず、最終的にメッセージボックスで「4」と表示されます。
期待通りの動作をさせるにはどうしたらよいでしょうか?
なお、検索オプションを「RichTextBoxFinds.None」に変更すると期待に近い動作をします。(右から左への検索にしたいので期待とは違いますが。)

■コード
richTextBox.Text = "aaaaa";
int start = 2;
RichTextBoxFinds option = RichTextBoxFinds.Reverse;
int index = _targetTextArea.Find("a", start, option);
MessageBox.Show(index.ToString());

■環境
Visual C# 2008 Express Edition

回答の条件
  • 1人2回まで
  • 登録:2008/05/27 17:47:57
  • 終了:2008/05/27 20:00:36

回答(1件)

id:freemann No.1

freemann回答回数309ベストアンサー獲得回数502008/05/27 18:46:09

ポイント60pt

RichTextBoxFinds.Reverseを指定した今回の場合は、変数「start」の役目は検索開始の位置ではなく、検索を終了する場所を指定していることになります。

下記のコードを動かしてみるとわかると思います。

次のリンク先の解説のところの後ろのところに書いてあります。

RichTextBox.Findの解説

RichTextBox rich = new RichTextBox();

rich.Text = "abcde";

int index = rich.Find("c", 2, RichTextBoxFinds.Reverse);

MessageBox.Show(index.ToString());

index = rich.Find("c", 3, RichTextBoxFinds.Reverse);

MessageBox.Show(index.ToString());

id:kiku-_-san

開始位置と終了位置がデフォルトのオプションとは逆なんですね!

ありがとうございます!

2008/05/27 20:00:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません