|
分類:[C#]
Form1にtextBox1とtextBox2、ボタンコントロールをはりつけて
検索機能つきのメモ帳をサンプルを参考にして作ってみました。
しかし、一部期待した動作をしない部分があるのでおしえてください。
それは、例えばtextBox1に「明日は雨今日も雨明後日も雨」という文を
入力して、textBox2に「雨」を入力して検索ボタンをおすと、最初の雨は
反転表示されて「雨が見つかりました」と表示されますが、
「次の検索」を
押すと今日も雨の「雨」に反転表示が移動せず、「雨が見つかりました」の
表示しかでません。
どこかにミスがあるのでしょうか?
C#2005
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int j = 0;//検索を始める位置
string swd;//検索する単語
//検索ボタンを押したときの処理
private void button1_Click(object sender, EventArgs e)
{//検索する単語を入力せずに検索ボタンをおしたとき
if (textBox2.Text == "")
{
MessageBox.Show("検索する単語を入力してください");
}
else
{
//検索する単語を入力してから検索ボタンをおしたとき
//違う単語での1回目の検索かをチェック
if (swd != textBox1.Text)
{//その単語での初めての検索なら検索する位置jを0にする
j = 0;
}//入力した検索する単語を代入
swd = textBox2.Text;
//検索する単語をtextBox1のJ番目の文字以降で検索
int i = textBox1.Text.IndexOf(swd, j);
//検索する単語が見つかったときの処理
if (i > -1)
{//検索語のみつかった位置
textBox1.SelectionStart = i;
//検索語の長さ
textBox1.SelectionLength = swd.Length;
if (j == 0)
{//その検索語が初めての検索ならボタンの文字を「次を検索に変える」
button1.Text = "次を検索";
}
//どの位置まで検索したかをjに格納
j = i + swd.Length;
MessageBox.Show(swd + "がみつかりました");
}
else
{//検索語がみつからなかったときの処理
MessageBox.Show(swd + "は見つかりませんでした ");
}
}
}
}
}
|