PDA

View Full Version : پیاده سازی رویدادی برای پایان تایپ



..JaZz..
شنبه 24 دی 1390, 16:18 عصر
سلام

من به کدی نیاز دارم که پایان تایپ رو هندل کنه. به این صورت که بعد از یک ثانیه اگه کاربر کلیدی رو در تکست باکس فشار نداد این رویداد اتفاق بیفته. چه جوری باید پیاده سازی کنم؟ با تایمر؟
ممنون

crazy_1892
شنبه 24 دی 1390, 17:21 عصر
خاصیت TextChange

Padrone
شنبه 24 دی 1390, 18:16 عصر
یه timer بذار
و وقتی رویداد TextChange اجرا شد timer رو صفر کن
و تو رویداد timer بنویس که اگر یک باز زمانی رد شد یعنی دیگه تایپ نمیشه

shadi khanum
شنبه 24 دی 1390, 18:18 عصر
فک نکنم این رویداد یه درد ایشون بخوره واسه اینکه رویداد textchange وقتی که خاصیت تکست textbox اتفاق بیفته raise میشه در حالی که ایشون میخواد اگه یه ثانیه گذشت و کاربر چیزی تایپ نکرد متوجه بشه...
چون میخوای یه مدت زمانی که گذشت و کاربر تایپ نکرد متوجه بشی پس تایمر میخوای ولی اگه برنامتو رو بیشتر توضیح بدی میشه دقیقتر گفت که باید چیکار کنی

..JaZz..
شنبه 24 دی 1390, 19:31 عصر
عرض به حضورتون که قراره تکست وارد شده در textbox، داخل یکی از جداول دیتابیس سرچ بشه و در نهایت داده های دریافت شده لیست بشن؛ اما به شرطی که کاربر به مدت یک ثانیه محتویات textbox را تغییر نده (پایان تایپ). حالا من اومدم یک تایمر با interavel هزارms با حالت disable روی فرم قرار دادم و دستور العمل های مربوطه برای جستجو را داخل این تایمر گذاشتم... داخل رویداد keypress تکست باکس، غیر فعالش می کنم و داخل رویداد keyup فعال می کنم. ولی من با این روش مشکل دارم احساس می کنم که این یک روش اشتباه و غیر اصولی است (وجدان درد :دی) همچنین رویداد keyup ، تمامی کلیدها رو می پذیره! منظورم کلیدهایی است که تغییری در محتوای تکست باکس ایجاد نمی کنه مثل کلید های ترکیبی(CTRL+keys) مثل دکمه های Insert, ESC,Alt,Enter,Function keys...
خب به نظرتون باید چه کار کنم؟
می خوام خواهش کنم یه روش اصولی معرفی کنید(اگه هست).

سپاس

Hybrid
شنبه 24 دی 1390, 19:46 عصر
عرض به حضورتون که قراره تکست وارد شده در textbox، داخل یکی از جداول دیتابیس سرچ بشه و در نهایت داده های دریافت شده لیست بشن؛ اما به شرطی که کاربر به مدت یک ثانیه محتویات textbox را تغییر نده (پایان تایپ). حالا من اومدم یک تایمر با interavel هزارms با حالت disable روی فرم قرار دادم و دستور العمل های مربوطه برای جستجو را داخل این تایمر گذاشتم... داخل رویداد keypress تکست باکس، غیر فعالش می کنم و داخل رویداد keyup فعال می کنم. ولی من با این روش مشکل دارم احساس می کنم که این یک روش اشتباه و غیر اصولی است (وجدان درد :دی) همچنین رویداد keyup ، تمامی کلیدها رو می پذیره! منظورم کلیدهایی است که تغییری در محتوای تکست باکس ایجاد نمی کنه مثل کلید های ترکیبی(CTRL+keys) مثل دکمه های Insert, ESC,Alt,Enter,Function keys...
خب به نظرتون باید چه کار کنم؟
می خوام خواهش کنم یه روش اصولی معرفی کنید(اگه هست).

سپاس
اول یه سوال شما چرا میخواین از این روش استفاده کنین؟؟؟ آیا به نظرتون بهترین روش اینه؟؟
به نظر من از این روش استفاده نکنین و بهتر اینه که بیاین تعریف کنین وقتی که کاربر دکمه اینتر رو زد بره محتویات رو در دیتا گرید ویو نشون بده ...

موفق باشید./

Padrone
شنبه 24 دی 1390, 20:00 عصر
عرض به حضورتون که قراره تکست وارد شده در textbox، داخل یکی از جداول دیتابیس سرچ بشه و در نهایت داده های دریافت شده لیست بشن؛ اما به شرطی که کاربر به مدت یک ثانیه محتویات textbox را تغییر نده (پایان تایپ). حالا من اومدم یک تایمر با interavel هزارms با حالت disable روی فرم قرار دادم و دستور العمل های مربوطه برای جستجو را داخل این تایمر گذاشتم... داخل رویداد keypress تکست باکس، غیر فعالش می کنم و داخل رویداد keyup فعال می کنم. ولی من با این روش مشکل دارم احساس می کنم که این یک روش اشتباه و غیر اصولی است (وجدان درد :دی) همچنین رویداد keyup ، تمامی کلیدها رو می پذیره! منظورم کلیدهایی است که تغییری در محتوای تکست باکس ایجاد نمی کنه مثل کلید های ترکیبی(CTRL+keys) مثل دکمه های Insert, ESC,Alt,Enter,Function keys...
خب به نظرتون باید چه کار کنم؟
می خوام خواهش کنم یه روش اصولی معرفی کنید(اگه هست).

سپاس
خب شما بهتر هست همون جست و جو رو داخل رخداد TextChange بنویسید
شاید کاربر بخواد کلمه اب رو بگرد بعد کلمه ابی بگرده
خب طبیعتا برنامه اول کلمه ا بعد اب و بعد ابی رو میگرده
و از نظرم من اصولی تر هم هست
شاید کاربر تایپ کندی داره اونوقت باید چیکار کرد؟
جست و جوی گوگل رو هم که نگا کنید بعد زدن هر کلید شروع به جست و جو می کنه

..JaZz..
شنبه 24 دی 1390, 20:42 عصر
مرسی دوستان:لبخندساده:
اما به خاطر یه سری محدویت ها ، مجبورم که از استفاده از این روشی که لطف کردید و پیشنهاد دادید خودداری کنم.
اگه امکان داره به موضوع تاپیک برگردیم. به نظرتون برای تشخصیص اتمام تایپ از روشی که توضیح دادم استفاده کنم یا راه کار اصولی تری هم پیدا میشه؟

shadi khanum
شنبه 24 دی 1390, 21:14 عصر
به نظر من هم بهتره که یه دکمه بذارید یا اینکه تو textLeave عملیات جستجو رو انجام بدین یا مثلا اگه کاربر enter زد..
ببین اگه بخوای تو خود رویداد textchange این کار رو انجام بدی، اگه حجم دیتا زیاد باشه کلا یه سرچ اعصاب خورد کن میشه(من خودم تجربه اش رو دارم ، بعد از یه مدت دیگه نمیشد استفاده کرد چون حجم دیتا زیاد بود و اگه مثلا کاربر میخواست یه کلمه 7 حرفی رو سرچ کنه با هر حرفی که میزد کلی پردازش انجام میشد و سرعت پایین بود) اگر هم بخوای تایمر بذاری که اگه 1 ثانیه صبر کرد جستجو کنه اگه کاربر آهسته کلمات رو بزنه باز این مشکل رو داری و یا اگه به قول دوستمون بخواد هم آب و هم آبی رو سرچ کنه کارش با لَختی انجام میشه و کاربر تقریبا متوجه نمیشه که کی جستجوش انجام میشه. به نظرم اگه کارفرمات رو قانع کنی که راه خوبی نیست بهتره...
موفق باشی

ya30ien2
شنبه 24 دی 1390, 23:34 عصر
string text;
int i;
رویداد تایمر
if(text==textbox1.text){i++}else if(text==textbox1.text && i==2){دستور جستجو}else {i=0;text=textbox1.text}