PDA

View Full Version : مشكل در جستجوي كلمات



behroz1387
شنبه 30 آذر 1387, 23:35 عصر
با سلام

من براي جستجوي يك كلمه در ميان يك ريچ تكست باكس كدي بصورت زير نوشته ام





if(richtextbox1.visible == true)


}



this.richTextBox1.SelectAll();


this.richTextBox1.SelectionColor = Color.Black;


this.richTextBox1.Select(0, 0);


string s =textbox1.text


int num = 0;


for (int i = 0; i < richTextBox1.Text.Length - s.Length + 1; ++i)


{


if (richTextBox1.Text.Substring(i, s.Length) == s)


{


this.richTextBox1.SelectionStart = i;


this.richTextBox1.SelectionLength = s.Length;


this.richTextBox1.SelectionColor = Color.Red;


num++;


}


}


Text = num.ToString();



this.richTextBox1.Select(richTextBox1.Text.Length, 0);


{



اين كد خوب كار مي كند بجز در مواردي كه آخر كلمه حرف ي با شد كه در اين صورت آن را پيدا نمي كند




مثلا اگر كلمه مهدي را جستجو كنيد پيدا نمي كند اما كلمه مهد را پيدا مي كند لطفا كمك كنيد


ممنونم

Sajjad.Aghapour
یک شنبه 01 دی 1387, 19:34 عصر
لازم نیست این همه کد بنویسید.این رو امتحان کنید


int i = richTextBox1.Text.IndexOf(textBox1.Text);
richTextBox1.Select(i, textBox1.Text.Length);
richTextBox1.SelectionColor = Color.Red;
richTextBox1.DeselectAll();

behroz1387
یک شنبه 01 دی 1387, 20:55 عصر
دوست عزيز اين كدي كه شما داديد موقعي مه كلمه مورد نظر وجود نداشته باشد ارور مي ده اگه ممكنه كد خودم را اصلاح كن ممنون مي شم

jeyjix
یک شنبه 01 دی 1387, 22:29 عصر
فكر كنم مشكلت از فارسي سازت باشه !
اگه توي جستجو با حروف ك و ي مشكل داري و با داده هاي قبليت در پايگاهت ايراد ميگيره
احتمالا به خاطر KBDFA.DLL قبلي و فعليت هست كه متفاوته
درمونش هم اصلاح KBDFA در صورتي كه الان ايراد داشته باشه و يا Edit داده هات در صورتي كه قبلا مشكل داشته بوده باشه !
احتمالا !!!!

xxxxxxxxxx
یک شنبه 01 دی 1387, 22:29 عصر
سلام مشکل جستجو حرف "ک" و "ی" بخاطر فایل kbdfa.dllدرمسیرsystem32\dllcacheو system32فولادر ویندوز می باشد .اصلاح شده آنرا یافته وجایگزین نماییدوپس از اطمینان از جایگزینی(همانطور که می دانیدفایلهای سیستمی سخت جایگزیین می شوند باید باsafemod بالا بیاورید ویندوز را)اگر باز هم مشکل بود بدلیل همان باگ کیبورد فارسی می باشد نه برنامه.البته می توانید درون برنامه کاری کنید که کداسکی های دو حرف بالا را بگیرد واگر استاندارد نبود(مثلا اگر حرف"ی"با کد اسکی 63اشتباه باشد وبایدحرف"ي"باکداسکی 237 بشود )آنرا جایگزین شود با توابع موحود در کلاسstring.

Sajjad.Aghapour
یک شنبه 01 دی 1387, 23:50 عصر
سلام دوست عزیز
error رو میشه با if برطرف کرد.کد شما هم روی سیستم من جواب میده.اگه رو سیستم شما جواب نمیده این کد رو هم اضافه کنید


richTextBox1.Text = richTextBox1.Text.Replace((char)1610, (char)1740);
richTextBox1.Text = richTextBox1.Text.Replace((char)1603, (char)1705);

اولی برای ی و دومی برای ک هست.برای textBox هم همین کار رو بکن....

Amir Oveisi
دوشنبه 02 دی 1387, 08:59 صبح
برای اینکه 'ی' که می نویسید زیرش دوتا نقطه نداشته باشه (اگر کیبوردتون یا حالا هر چیز دیگه ای مشکل داشته باشه) میتونین برای تایپش از shift + ط استفاده کنید. (یا کد اسکی ط رو در بیارید و هر موقع ی تایپ شد باهاش جایگزین کنید)

موفق باشید
jooje

behroz1387
دوشنبه 02 دی 1387, 17:51 عصر
استاد اين كد را در كدام قسمت وارد كنم
richTextBox1.Text = richTextBox1.Text.Replace((char)1610, (char)1740);
richTextBox1.Text = richTextBox1.Text.Replace((char)1603, (char)1705);

Sajjad.Aghapour
دوشنبه 02 دی 1387, 20:57 عصر
استاد اين كد را در كدام قسمت وارد كنم
richTextBox1.Text = richTextBox1.Text.Replace((char)1610, (char)1740);
richTextBox1.Text = richTextBox1.Text.Replace((char)1603, (char)1705);

قبل از شروع جستجو.یعنی قبل از کدهایی که خودتون نوشتید