PDA

View Full Version : متوفق کردن حلقه for



mohsen6969
جمعه 04 مرداد 1392, 03:27 صبح
چگونه ممکن است تا کاربر در یک textbox مقدار مشخصی را تایپ نکرده حلقه For متوقف شده و بعد از اینکه کاربر فرضا اسم خود را تایپ کرد و صحیح بود مقدار بعدی حلقه نمایش داده شود یعنی یک گام حلقه جلو رود.

با تشکر

MohammadHadi2031
جمعه 04 مرداد 1392, 04:30 صبح
سلام دوست عزیز
من به طور کامل متوجه منظور شما نشدم ولی اگر می خواهید حلقه یک گام به جلو رود از دستور continue استفاده کنید و در ضمن زمانی که حلقه در حال اجرا است متد دیگری اجرا نمی شود مثلا متد TextChanged مربوط به textbox اجرا نمی شود که شما بتوانید بفهمید متن تغییر کرد مگر اینکه یک Thread ایجاد کنید و حلقه را به طور همزمان اجرا کنید

group45
جمعه 04 مرداد 1392, 11:46 صبح
دوست عزیز اول بگید که این قطعه کد قراره چکارکنه (برنامتون قراره چکارکنه)
دوم اینکه این طرز فکرتون اشتباهه. دنبال یه راه دیگه باشید

mohsen6969
جمعه 04 مرداد 1392, 16:45 عصر
دوست عزیز اول بگید که این قطعه کد قراره چکارکنه (برنامتون قراره چکارکنه)
دوم اینکه این طرز فکرتون اشتباهه. دنبال یه راه دیگه باشید

من در رویداد form_shown یک Select به بانک اطلاعاتی میزنم و اطلاعات توسط یک حلقه for نمایش می‌دهم سپس به ازای هر مقدار نمایش داده شده کاربر باید یک مقدار مثلا نام خود را که قبلا در بانک اطلاعاتی ذخیره شده را وارد کند در صورتی که صحیح بود حلقه for یک گام به جلو رفته و مقدار بعدی نمایش داده شود و به همین ترتیب تا به آخر

roolinjax
جمعه 04 مرداد 1392, 18:43 عصر
سلام
بهتره با رویداد keypress کار کنید و حلقه ی for رو خودتون شبیه سازی کنید با یه متغیر سراسری که با زدن اینتر و بررسی مقدار موردنظر یه دونه بهش اضافه بشه و فیلد بعدی رو بررسی کنه
راه حل دیگه ای که به ذهنم میرسه اینه که شما داخل بلاک for یه متد خودساخته که وظیفه ی بررسی رو برعهده داره رو فراخوانی بکنید اینطوری اجرای حلقه متوقف شده و به بلاک مورد نظر میره و بعد برمیگرده و ادامه داستان.
حالا اون بلاک شما میتونه یه مقدار bool بعنوان خروجی داشته باشه که با این مقدار نتیجه بررسی صحت ورود اطلاعات اعلان بشه به حلقه ی for تا حلقه تصمیم بگیره باید جلو بره یا بپره بیرون.
کامل بود ؟

Mohammadm
جمعه 04 مرداد 1392, 19:18 عصر
چگونه ممکن است تا کاربر در یک textbox مقدار مشخصی را تایپ نکرده حلقه For متوقف شده و بعد از اینکه کاربر فرضا اسم خود را تایپ کرد و صحیح بود مقدار بعدی حلقه نمایش داده شود یعنی یک گام حلقه جلو رود.

با تشکر
دوست عزیز شما قبلا هم این سوالو مطرح کردید حالا رهاش کردید و اومدید دوباره عنوانش کردید
بهتر نبود همونجا پیگیر جواب سوالتون میشدید؟
اینم لینکش
http://barnamenevis.org/showthread.php?410714-%D9%87%D9%86%DA%AF%D8%A7%D9%85%DB%8C-%DA%A9%D9%87-%D9%81%D8%B1%D9%85-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF-%DB%8C%DA%A9-%D9%BE%DB%8C%D8%BA%D8%A7%D9%85-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D9%86%D8%B4%D8%A7%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D8%B4%D9%88%D8%AF&p=1831479&viewfull=1#post1831479

Mohammadm
جمعه 04 مرداد 1392, 19:20 عصر
چگونه ممکن است تا کاربر در یک textbox مقدار مشخصی را تایپ نکرده حلقه For متوقف شده و بعد از اینکه کاربر فرضا اسم خود را تایپ کرد و صحیح بود مقدار بعدی حلقه نمایش داده شود یعنی یک گام حلقه جلو رود.

با تشکر
دوست عزیز شما قبلا هم این سوالو مطرح کردید حالا رهاش کردید و اومدید دوباره عنوانش کردید
بهتر نبود همونجا پیگیر جواب سوالتون میشدید؟
اینم لینکش
http://barnamenevis.org/showthread.php?410714-%D9%87%D9%86%DA%AF%D8%A7%D9%85%DB%8C-%DA%A9%D9%87-%D9%81%D8%B1%D9%85-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF-%DB%8C%DA%A9-%D9%BE%DB%8C%D8%BA%D8%A7%D9%85-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D9%86%D8%B4%D8%A7%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D8%B4%D9%88%D8%AF&p=1831479&viewfull=1#post1831479

mohsen6969
جمعه 04 مرداد 1392, 19:31 عصر
همون طور که دوستان گفتن باید از یک thread دیگه استفاده کرد و این thread جدید وظیفه ی اجرای حلقه را داشته باشد، ولی باید آنرا suspended (معلق) کرد تا زمانی که کاربر مقداری را در textbox وارد کرده و صحت داده وارد شده مشخص گردد و در صورت صحیح بودن thread از حالت معلق خارج شده و حلقه را یک گام به جلو ببرد.
راه حل دیگر به جای استفاده از thread دیگر استفاده از کلاس BackgroundWorker می‌باشد.

mohsen6969
جمعه 04 مرداد 1392, 19:36 عصر
دوست عزیز شما قبلا هم این سوالو مطرح کردید حالا رهاش کردید و اومدید دوباره عنوانش کردید
بهتر نبود همونجا پیگیر جواب سوالتون میشدید؟
اینم لینکش
http://barnamenevis.org/showthread.php?410714-%D9%87%D9%86%DA%AF%D8%A7%D9%85%DB%8C-%DA%A9%D9%87-%D9%81%D8%B1%D9%85-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D9%85%DB%8C-%D8%B4%D9%88%D8%AF-%DB%8C%DA%A9-%D9%BE%DB%8C%D8%BA%D8%A7%D9%85-%D9%85%D9%86%D8%A7%D8%B3%D8%A8-%D9%86%D8%B4%D8%A7%D9%86-%D8%AF%D8%A7%D8%AF%D9%87-%D8%B4%D9%88%D8%AF&p=1831479&viewfull=1#post1831479
بله اونجا مطرح کردم ولی به 2 دلیل دوباره مطرحش کردم اولا عنوان اون سوال یه چیز دیگه بود و توی کامنت ها این سوال و کرده بودم و به همین دلیل شاید کمتر کسی بهش پاسخ می داد.
دوما با تشکر از جوابتون تو اون تاپیک و اتفاقا از راهنمایی تون هم استفاده کردم چون یه مقدار طول کشید دوباره توی یه تاپیک جدید مطرحش کردم.