جستجی یک richTextBox همانند Find NotePad
دوستان اگه find نت پد و دیده باشید هر چند بار روی دکمه فیند کلیک کنید به ترتیب لغات پیدا شده رو بهتون نشون میده
من با این کد این کار و می کنم اما مشکل اینجاست فقط یکبار این کار و میکنه
string a = txtSearch.Text;
richTextBox1.Focus();
richTextBox1.Find(a, RichTextBoxFinds.WholeWord);
نقل قول: جستجی یک richTextBox همانند Find NotePad
باسلام:
میتونید موقعیت اولین کلمه جستجو شده که در متن کنترل richTextBox وجود دارد رو نگه داری کنید و سپس از اینجا به بعد رو جستجو کنید.
به عنوان مثال:
publicint FindMyText(string txtToSearch, int searchStart, int searchEnd)
{
// Unselect the previously searched string
if (searchStart > 0 && searchEnd > 0 && indexOfSearchText >= 0)
{
rtb.Undo();
}
// Set the return value to -1 by default.
int retVal = -1;
// A valid starting index should be specified.
// if indexOfSearchText = -1, the end of search
if (searchStart >= 0 && indexOfSearchText >=0)
{
// A valid ending index
if (searchEnd > searchStart || searchEnd == -1)
{
// Find the position of search string in RichTextBox
indexOfSearchText = rtb.Find(txtToSearch, searchStart, searchEnd, RichTextBoxFinds.None);
// Determine whether the text was found in richTextBox1.
if (indexOfSearchText != -1)
{
// Return the index to the specified search text.
retVal = indexOfSearchText;
}
}
}
return retVal;
}
// Reset the richtextbox when user changes the search string
privatevoid textBox1_TextChanged(object sender, EventArgs e)
{
start = 0;
indexOfSearchText = 0;
}
نقل قول: جستجی یک richTextBox همانند Find NotePad
اما من کدهات و نمیفهمم
نه می دونم richtextbox کدومه و نه ...
نقل قول: جستجی یک richTextBox همانند Find NotePad
کجاشو متوجه نمیشین کنترل richbox شما rtb هستش .
نقل قول: جستجی یک richTextBox همانند Find NotePad
باسلام:
به درخواست شما کد ساده تری براتون نوشتم:
در این کد شما هر بار که دکمه جستجو رو بزنید کلمه مورد نظر اگر یافت بشه BackColor به رنگ زرد تغییر میکنه و دوباره که میزنید سعی به پیدا کردن کلمه بعدی میکنه.
int laststop = 0;
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.SelectionBackColor = Color.White;
int check = 0;
if (check == -1)
{
laststop = 0;
}
check = richTextBox1.Find(textBox1.Text, laststop, RichTextBoxFinds.None);
richTextBox1.SelectionBackColor = Color.Yellow;
if (check ==-1)
{
MessageBox.Show("Search is completed.");
laststop = 0;
}
else
{
laststop = laststop + textBox1.Text.Length;
}
}
موفق باشید.
نقل قول: جستجی یک richTextBox همانند Find NotePad
ازتون بسیار ممنونم
اما این همه ی لغات پیدا نمیکنه و فقط یک لغت و نشون میده
1 ضمیمه
نقل قول: جستجی یک richTextBox همانند Find NotePad
سلام ، یک نمونه واستون نوشتم ( کدش رو هم ساده نوشتم) البته به زبان vb.net !
میتونین تبدیل کنید ( ببخشید سی شارپ نصب ندارم وگرنه با سی شارپ واستون مینوشتم)
سوالی در مورد سورس داشتین در خدمتم.
نقل قول: جستجی یک richTextBox همانند Find NotePad
نقل قول:
نوشته شده توسط
سیاوش ابراهیمی
سلام ، یک نمونه واستون نوشتم ( کدش رو هم ساده نوشتم) البته به زبان vb.net !
میتونین تبدیل کنید ( ببخشید سی شارپ نصب ندارم وگرنه با سی شارپ واستون مینوشتم)
سوالی در مورد سورس داشتین در خدمتم.
تو حالت Find تونستم تبدیلش کنم به سی شارپ و مشکلم حل شد
اما تو حالت Find Next هر کار کردم نتونستم به سی شارپ تبدیلش کنم
اگه بشه فقط حالت Find Next رو کد سی شارپش و بدید (بدون بررسی checkbox ممنون میشم)
نقل قول: جستجی یک richTextBox همانند Find NotePad
شما از این کد استفاده کن، مثل هلو کار می کنه ( همون کدیه که دوستمون نوشته بود، با یه سری تفاوت جزئی ) :)
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.SelectionBackColor = Color.White;
int check = 0;
if (check == -1)
{
laststop = 0;
}
check = richTextBox1.Find(textBox1.Text, laststop, RichTextBoxFinds.None);
richTextBox1.SelectionBackColor = Color.Yellow;
if (check == -1)
{
MessageBox.Show("Search is completed.");
//--------------
richTextBox1.SelectAll();
richTextBox1.SelectionBackColor = Color.White;
//-------------
laststop = 0;
}
else
{
//laststop = laststop + textBox1.Text.Length;
laststop = richTextBox1.SelectionStart + textBox1.Text.Length;
}
}
نقل قول: جستجی یک richTextBox همانند Find NotePad
من کد یر رو نوشتم ولی یه ایرادی که داره باید دفعات زیادی دکمه مربوطه را فشار دهیم تا به مورد جستجوی بعدی برسیم اگه بازم توانستید ایراد کد را بیابید .
public int counterNext ;
private void toolStripbtnFindNext_Click(object sender, EventArgs e)
{
counterNext++;
try
{
int a = rtbPaper.Text.IndexOf(toolStripTxtFind.Text);
a += counterNext;
int i = rtbPaper.Text.IndexOf(toolStripTxtFind.Text, a);
rtbPaper.Select(i, toolStripTxtFind.Text.Length);
rtbPaper.Focus();
rtbPaper.ScrollToCaret();
}
catch (System.Exception)
{
MessageBox.Show("دیگه موردی یافت نمیشه", "خطای جستجو", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}
نقل قول: جستجی یک richTextBox همانند Find NotePad
من کد زیر رو نوشتم ولی یه ایرادی که داره باید دفعات زیادی دکمه مربوطه را فشار دهیم تا به مورد جستجوی بعدی برسیم اگه بازم توانستید ایراد کد را بیابید و اصلاح کنید . خیلی به جواب نزدیک است .
public int counterNext ;
private void btnFindNext_Click(object sender, EventArgs e)
{
counterNext++;
try
{
int a = richTextBox1.Text.IndexOf(textBoxFind.Text);
a += counterNext;
int i =richTextBox1.Text.IndexOf(textBoxFind.Text, a);
richTextBox1.Select(i, textBoxFind.Text.Length);
richTextBox1.Focus();
richTextBox1.ScrollToCaret();
}
catch (System.Exception)
{
MessageBox.Show(" خطای جستجو", "دیگه موردی یافت نمیشه", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}
با سپاس فروان از شما