PDA

View Full Version : سوال: مشکل در کد برنامه برای جستجو در متن



iran_sky
جمعه 28 آبان 1389, 23:31 عصر
با سلام به دوستان
مشکل این کد چیست
با نوشتن کلمه در textbox اولین کلمه مورد نظر را در richtextbox انتخاب کرده و به صورت highlight در می اورد اما با دوباره کلیک کردن کلید find این پیغام رو میده
کد برنامه


static int i;
private void btn_Find_Click(object sender, EventArgs e)
{
int s = RTB.Find(txt_find.Text, i, RichTextBoxFinds.WholeWord);
RTB.Select();
i = s + int.Parse(txt_find.Text);
}


پیغام خطا



Input string was not in a correct format.

Reza_Yarahmadi
شنبه 29 آبان 1389, 08:39 صبح
علت خطا كه معلومه (احتمالا!!)
دستور زير و با دستور به دستور بهد تغيير بديد

i = s + int.Parse(txt_find.Text);
//Replace
i = s + txt_find.Text.Length;ولي اينكه ميگيد بار اول خطا نميده ...:متفکر: بايد همون بار اول هم خطا بده. يك بار از منوي Build گزينه Rebuild Solution رو انتخاب كنيد شايد درست بشه!!

iran_sky
شنبه 29 آبان 1389, 21:32 عصر
i = SafeArrayRankMismatchException = txt_find.Text.Length;
دوست عزیز همچین متدی داره

Reza_Yarahmadi
شنبه 29 آبان 1389, 22:06 عصر
کد اصلاح شد.
یکبار توی VS کد نوشتم ببین چی شد!! بعدشم حواس جمع منو ...:گیج:

iran_sky
شنبه 29 آبان 1389, 22:18 عصر
ممنونم دوست عزیز حل شد اما با این کد واسه replace کلمه اول جایگزین نمیشه و بقیه جایگزین میشه البته با تمام شدن کلمات مورد نظر خطا میده


private void btn_Find_Click(object sender, EventArgs e)
{
int s = RTB.Find(txt_find.Text, i, RichTextBoxFinds.WholeWord);
RTB.Select();
i = s +txt_find.Text.Length;

}
private void btn_replace_Click(object sender, EventArgs e)
{
btn_Find_Click(sender,e);
RTB.SelectedText = txt_replace.Text;
}

Reza_Yarahmadi
شنبه 29 آبان 1389, 22:26 عصر
بصورت زیر امتحان کنید ببینید درست میشه یا نه

private void btn_Find_Click(object sender, EventArgs e)
{
int s = RTB.Find(txt_find.Text, i, RichTextBoxFinds.WholeWord);
RTB.Select();
if (s != -1)
i = s + txt_find.Text.Length;
else
i = txt_find.Text.Length - 1;

}
private void btn_replace_Click(object sender, EventArgs e)
{
if(RTB.SelectedText == txt_find.Text)
RTB.SelectedText = txt_replace.Text;
btn_Find_Click(sender, e);
}

iran_sky
شنبه 29 آبان 1389, 22:38 عصر
دوست عزیز این کد خیلی بدتر شد و replace اصلا کار نمیکنه و find هم بجز کلمه اول بقیه رو یکسره select میکنه البته بجز بار اول