PDA

View Full Version : سوال: قفل شدن ComboBox



reza586
دوشنبه 25 فروردین 1399, 10:39 صبح
سلام دوستان
من یه فرم نوشتم که چندتا ComboBox داره و هر کدوم چندتا آیتم که به صورت کشویی باز میشه(کمبو باکسه دیگه)
یه مسئله دارم اینه که بعد چندبار باز و بسته شدن فرم ، ComboBox ها قفل میشن و دیگه کشوی اونها باز نمیشه
یه سوال دیگه اینکه اسم فرمی که نوشتم f1 هست،میخوام به نرم افزار بگم تا وقتی فرمی به نام f1 باز هست هیچ f1 دیگه ای باز نشه
ممنون

navid_progland
دوشنبه 25 فروردین 1399, 19:27 عصر
با سلام ...

جواب به: سوال اول شما

دوست عزیز، اول بصورت جداگانه کارکرد ComboBox ها و سایر بخش های موجود در پروژتون رو بررسی کنید تا مشخص بشه مشکل مربوط به کدوم بخشه، اگه Debug رو انجام دادین و مشکل رفع نشد، معمولا در اکثر زبان ها و البته در زبان #C واسه جلوگیری از بروز این چنین مشکلاتی می تونید از مدیریت خطا یا Exception استفاده کنید.
که ساختار تعریفش به این شکله :


try
{
// statements causing exception
}
catch( ExceptionName e1 )
{
// error handling code
}
catch( ExceptionName e2 )
{
// error handling code
}
catch( ExceptionName eN )
{
// error handling code
}
finally
{
// statements to be executed
}



جواب به: سوال دوم شما

واسه اینکه فرم شما در صورت باز بودن نتونه با هر سری درخواست، دوباره در یک یا چند صفحه جدید دیگه باز بشه.


1- روی Form1 پروژتون یه دکمه قرار بدید.

151586



2- این کد رو به رویداد Click دکمه فرمتون اضافه کنید:


bool IsOpen = false;
foreach (Form f in Application.OpenForms)
{
if (f.Text == "Form2")
{
IsOpen = true;
f.Focus();
break;
}
}


if (IsOpen == false)
{
Form f2 = new Form2();
f2.Show();
}
}
}



3- یک فرم دیگه با نام Form2 ایجاد کنید.

151587


4- در نهایت با اولین کلیک بر روی دکمه Open Form 2 صفحه Form2 پروژتون به نمایش درمی آید، و طبق شرطی که در کد بالا تعریف کردیم، در صورتی که Form2 باز باشه، فرم فقط Focus میشه و دیگه واسه یک یا چند بار دیگه باز نمیشه.

reza586
دوشنبه 25 فروردین 1399, 21:21 عصر
سلام
ممنو بابت راهنمایی
در مورد اول انجام دادم فرمایش شما رو ولی نشد،فکر میکنم دلیل مشکل اینه که وقتی فرم بسته میشه این بسته شدن به صورت کامل نیست و یکسری منابع هنوز درگیرن(ظواهر اینطوری نشون میده،چون برای بار اول لود فرم و کنترل هاش کمی طول میکشه به خاطر محاسبات ولی برای دفعات بعد خیلی سریع لود میشه)
در مورد دوم هم چون فرم از اینترنت استفاده میکنه (نرم افزار دیگه ای فرم رو لود میکنه)پیش میاد که در صورت قطع و وصل اینترنت ،فرم باز و بسته میشه
به همین خاطر دقیقا چیزی رو که نوشتم میخوام،یعنی تا مثلا f1 باز هست هیچ f1 دیگه ای حق باز شدن نداشته باشه

reza586
سه شنبه 26 فروردین 1399, 23:26 عصر
از دوستان اگر کسی میتونه لطفا کمک کنه
من قبل از این پست جستجو هم کردم بر اساس کلمات" ComboBox " و "قفل شدن" و نتایج رو یکی یکی بررسی کردم اما مورد مشابهی نبود
این مورد قفل شدن کمبوباکس ها خیلی اذیت میکنه و درگیرم کرده

reza586
جمعه 29 فروردین 1399, 19:22 عصر
یعنی کسی نیست یا اینکه همچین موردی فقط برای من پیش اومده:متفکر:

hamidrezax1
جمعه 29 فروردین 1399, 22:47 عصر
سلام دوست عزیز
چجوری کمبو باکس رو پر کردید؟
از دیتا بیس یا ؟؟؟؟؟؟
بعد از سلکت یا انتخاب یکی از آیتم های کمبو باکس آیا شرطی قرار دادین؟

reza586
شنبه 30 فروردین 1399, 00:11 صبح
سلام دوست عزیز
چجوری کمبو باکس رو پر کردید؟
از دیتا بیس یا ؟؟؟؟؟؟
بعد از سلکت یا انتخاب یکی از آیتم های کمبو باکس آیا شرطی قرار دادین؟
سلام
از دیتا بیس نیست و دستی بهش دادم

اما چندتا کمبوباکس دیگه هم هست که اونها الان خام هستند و هیچ آیتم و سلکتی هم ندارن و بازم همزمان قفل میشن
و مسئله دیگه اینکه بدون سلکت و صرفا با یکی دوبار باز و بسته شدن فرم این اتفاق میفته و قفل میشن

hamidrezax1
شنبه 30 فروردین 1399, 09:19 صبح
دوست عزیز معمولا زمانی این اتفاق میفته که یک جایی شرطی داشته باشید و یا یک ارور توی فرمتون ایجاد بشه.مثلا یک فیلد باید عدد داده بشه و شما حروف وارد کرده باشید
در این صورت برنامه حالت هنگی میگیره و ایتم ها به درستی کار نمیکنن.این موضوع رو با چک پوینت گام به گام بررسی کنید و یا در صورت امکان کدهاتون رو قرار بدین تا دوستان بتونن نظراتشون رو ارائه بدن
موفق باشید

reza586
شنبه 30 فروردین 1399, 11:34 صبح
دوست عزیز معمولا زمانی این اتفاق میفته که یک جایی شرطی داشته باشید و یا یک ارور توی فرمتون ایجاد بشه.مثلا یک فیلد باید عدد داده بشه و شما حروف وارد کرده باشید
در این صورت برنامه حالت هنگی میگیره و ایتم ها به درستی کار نمیکنن.این موضوع رو با چک پوینت گام به گام بررسی کنید و یا در صورت امکان کدهاتون رو قرار بدین تا دوستان بتونن نظراتشون رو ارائه بدن
موفق باشید
سلام
بسیار بسیار ممنون بابت وقتی که گذاشتید
همونطوری که عرض کردم کمبوباکس ها فقط یکیشون چندتا آیتم دستی داره و بقیه هنوز هیچ آیتم و سلکتی ندارن
و کدها هم جنبه آموزشی داشته و خیلی خیلی ساده هستند
از طرفی چون بدون سلکت قفل میشن بعیده از کدهای مربوط به کمبوباکس باشه
همونطوری که در چند پست بالا عرض کردم احتمالا بخاطر درگیری منابع فرم بسته شده هست
بازم کار میکنم ببینم چی میشه
گفتم شاید از دوستان باشه کسی که قبلا این تجربه رو داشته

ShayanFiroozi
شنبه 30 فروردین 1399, 23:05 عصر
سلام ،

به احتمال خیلی زیاد معماری نرم افزارتون صحیح نیست ! منظور اینه که روش هایی که شما برای فرم ها،اشیاء و فراخوانی اونا استفاده کردین احتمالا ایراد دارن ،

نکته دوم اینکه مهم نیست کدها چقدر ساده هستند یک خطای کوچیک میتونه Thread نرم افزار شما رو به DeadLock ببره که الان هم همین اتفاق افتاده.

بدون دیدن کدها یا حد اقل بخشی از اونا نمیشه نظر قطعی داد.

** ضمنا به نظر میاد شما باید نرم افزارتون رو MultiThread کنین ، کار با اینترنت قطعا با یک Thread امکان پذیر نیست چون شما باید مثلا n ثانیه یا دقیقه صبر کنین تا فلان سرور پاسخ شما رو بده و تا اونموقع کل ترد شما از جمله GUI هنگ میکنه.

** پیشنهاد میکنم برای نوشتن چنین برنامه های که عملیات سنگین دارن ( مثل کپی کردن فایل ، گرفتن بک آپ ، دانلود و آپلود از اینترنت و غیره) حتما در خصوص MultiThreading تحقیق کنین.

مباحثی مثل async/await و Task.Run.

یه ویدئو در آپارات موجوده که بنده سالها پیش آپلود کردم شاید به کارتون بیاد :

https://www.aparat.com/v/dfbZo (https://www.aparat.com/v/dfbZo)

reza586
یک شنبه 31 فروردین 1399, 10:26 صبح
سلام و سپاس
بله یک احتمال این هست که معماری صحیح نباشه
در مورد نکته دوم که فرمودید منظورم از ساده بودن کدها اینه که کم و قابل محاسبه به صورت ذهنی و دستی هستند و مسئله دیگه اینکه کل فرم و کنترل هاش و حتی تایمر به درستی کار میکنن و فقط کمبوها قفل میشن
در مورد Thread هم علاقه زیادی به یادگیری دارم اما به دنبال منبعی هستم که از صفر به صورت اصولی آموزش داده باشه و مثال زده باشه،اگر سراغ دارین ممنون میشم آدرس بدید

ShayanFiroozi
یک شنبه 31 فروردین 1399, 10:37 صبح
به نظر بنده بهرته ویدئو ببینید :

https://www.youtube.com/watch?v=2moh18sh5p4

https://www.youtube.com/watch?v=C5VhaxQWcpE


اگر میخواین از YouTube دانلود کنین از این سایت استفاده کنین :

https://keepvid.works/

reza586
یک شنبه 31 فروردین 1399, 13:33 عصر
به نظر بنده بهرته ویدئو ببینید :

https://www.youtube.com/watch?v=2moh18sh5p4

https://www.youtube.com/watch?v=C5VhaxQWcpE


اگر میخواین از YouTube دانلود کنین از این سایت استفاده کنین :

https://keepvid.works/



بی نهایت ممنون