PDA

View Full Version : گفتگو: استفاده از تجربه دوستان در ضمینه Tabpage ها



reza_edu
شنبه 29 آبان 1389, 11:07 صبح
سلام دوستان

من در برنامه ام از هفت تب پیج استفاده کردم که هر کدام به چهار قسمت تشکیل میشن اینجوری تونستم همه بیست و هشت قسمت برنامه ام رو تو یه فرم جا بدم اما زمانی که شرع به اضافه کردن تکس باکس ها و لیبل هام کردم(که در کل چیزی حدود نه صد و پنجاه تا شد ) حالا شروع کردم به تنظیم رویدادها و شرط ها خوب از اونجا که همه رو تو یه فرم جا دادم برای وارد کردن کدشون این کارباید تو یه صفحه انجام بشه شما پیش خودتون تصور کنید که الان صفحه کد من به چه شکلی درومده الان که من تازه نصف کد هارو قراردادم خودم گیج میکنم چی به چیه
:عصبانی++::عصبانی++::عصبانی++:
آخه همشون هم کد های مربوط به رویداد هاست نه تو ماژول میشه جا داد نه تو کلاس
:گریه:
من برای اسم گذاری هم از شیوه خواص استفاده کردم تا متوجه شم که چی به چی ربط داره نمونه هاش تو زیر نوشتم اینا کوچیک شون هست

TbxSuppliant_ShowOther_InfoFamiliarComputer
RadioBtnSuppliant_SearchInfoLevelMindLanguageRead_ Medium
Label_TbxSuppliant_Search_LastOfCertificateFa
Label_CbxSuppliant_SearchPer_StatusMarrid

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

ali_najari
شنبه 29 آبان 1389, 12:09 عصر
دوست عزيز ميتوني از دستور #Region استفاده كني و دستوراتت رو جدا بزاري چون #Region ها جدا پردازش ميشن توي دل خود كدهاي برنامه به اين شكل:

بطور مثال:



#Region "TabPage1"
' دستورات مربوط به TabPage1
End Region

alireza_s_84
شنبه 29 آبان 1389, 12:15 عصر
سلام دوستان

من در برنامه ام از هفت تب پیج استفاده کردم که هر کدام به چهار قسمت تشکیل میشن اینجوری تونستم همه بیست و هشت قسمت برنامه ام رو تو یه فرم جا بدم اما زمانی که شرع به اضافه کردن تکس باکس ها و لیبل هام کردم(که در کل چیزی حدود نه صد و پنجاه تا شد ) حالا شروع کردم به تنظیم رویدادها و شرط ها خوب از اونجا که همه رو تو یه فرم جا دادم برای وارد کردن کدشون این کارباید تو یه صفحه انجام بشه شما پیش خودتون تصور کنید که الان صفحه کد من به چه شکلی درومده الان که من تازه نصف کد هارو قراردادم خودم گیج میکنم چی به چیه
:عصبانی++::عصبانی++::عصبانی++:
آخه همشون هم کد های مربوط به رویداد هاست نه تو ماژول میشه جا داد نه تو کلاس
:گریه:
من برای اسم گذاری هم از شیوه خواص استفاده کردم تا متوجه شم که چی به چی ربط داره نمونه هاش تو زیر نوشتم اینا کوچیک شون هست

TbxSuppliant_ShowOther_InfoFamiliarComputer
RadioBtnSuppliant_SearchInfoLevelMindLanguageRead_ Medium
Label_TbxSuppliant_Search_LastOfCertificateFa
Label_CbxSuppliant_SearchPer_StatusMarrid

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





سلام دوست عزیز:
در میحط دات نت PartialClass دقیقا برای همینکار تعبیه شده است. شما کدهای مرتبط با هم رو (مثلا رویدادهای مربوط به کنترلهای موجود در هر تب) در یک کلاس مجزا قرار بدین و به راحتی با سوییچ بین کلاسها کدهاتون رو مدیریت کنید.
موفق باشید

reza_edu
شنبه 29 آبان 1389, 16:18 عصر
خیلی ممنون از راهنمائی دوستان گرامی مفید بود درمورد این مطلب اطلاعی نداشتم البته دیده بودم نمونه کدی ولی متوجه قضیه نشده بودم ممنون:لبخندساده:

reza_edu
یک شنبه 30 آبان 1389, 00:24 صبح
الان یه سوال جدید برای من پیش اومده که اگه دوستان راهنمائی کنن من ممنون میشم (وگرنه جونم سر این برنامه آخر سر در میره این شوخی بود:بامزه:ولی ممکنه واقعیت پیدا کنه:متعجب:) آخه تو برنامه 402 تا تکس باکس دارم 75 کمبو باکس 48 تا مسک باکس حالا من می خوام Event Fcous(رویداد تمرکز) هر وقت برای هرکدوم از تکس باکس ها و ... فعال شد یعنی کاربر روشون کلیک کرد رنگ Backcolor شون عوض بشه ( تو رنگ عوض شدنش مشکلی نیست میتونم تک تک با تنظیمات فکوس این کارو کنم اما نمیشه یه کدی بنویسی که بشه با اون رو همیه تکس باکس ها و ... قابل اجراباشه مثلا یه کد دو خطی یا ده خطی بنویسی ولی این کد روی همه تکس باکس ها و ... اعمال بشه ؟

یه مشکل دیگه هم دارم من وقتی تو یه پروژه برای یه تکس باکس یه Evente خاص تعریف میکنم همون کد تولید شده رو تو یه پروژه دیگه کپی میکنم دیگه اون تکس باکس با اینکه اسمش با قبلی تو پروژه قبلی یکیه ولی ویژوال استدیو یه کد جدید همش براش ایجاد میکنه اینو چیکار باید بکنم ممنون میشم کمک کنید:افسرده:

ali_najari
یک شنبه 30 آبان 1389, 14:42 عصر
دوست عزيز شما ميتونيد از روش زير براي اينكار استفاده كنيد كه بجاي اينكه براي هر رويداد ها Enter و Leave تعريف كنيد يكبار تعريف كنيد و بعد از Handled كنترلهاي مربوطه را تعريف نماييد يعني فرض كنيد كه 3تا Textbox داريد و 2 تا Combobox فقط كافيه از دستور زير استفاده كنيد:


Private Sub Controls_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter _
, TextBox2.Enter, TextBox3.Enter _
, ComboBox1.Enter, ComboBox2.Enter
Dim Co As Control = sender
Co.BackColor = Color.Yellow
End Sub
Private Sub Controls_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave _
, TextBox2.Leave, TextBox3.Leave _
, ComboBox1.Leave, ComboBox2.Leave
Dim Co As Control = sender
Co.BackColor = Color.White
End Sub

reza_edu
دوشنبه 01 آذر 1389, 00:32 صبح
سلام به همه مهندسان گرامی مشکلم رو حل کردم البته باکمک یه دوست دیگه JohnH (http://www.vbdotnetforums.com/members/johnh.html) کدیکه این فرد تو یه سایت خارجی گذاشته بود باعث شد تا من بتونم مشکلم رو حل کنم اگه خواستید اصل شو ببینید ت. لینک زیر هست
http://www.vbdotnetforums.com/windows-forms/32850-handling-multiple-textboxes-per-old-vb6-txtbox-index.html

خوب من روش کارم به این صورت بود که دوتا private sub نوشتم که تو برنامه ام لازم داشتم آرگومونهای که به ساب روتینم دادم یکی Sender بود و دیگری هم e به شکل زیر :


Private Sub MyTextBoxes_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs)
CType(sender, TextBox).
End Sub

بعد برای تمام تکس باکس های که میخواستم این سابروتین براشون اجرا بشه روشون کلیک کردم (دسته جمعی همشون رو یه جا نه تک تک) تو Propertis قسمت Event ها رفتم و خاصیت مورد نظرم رو که رویداد Fockos بود انتخاب کردم اون موقع از رویداد های که نشون میداد منو اون سابروتینی که خودم نوشته بودم رو انتخاب کردم اینم نمونه کدش


Private Sub MaskedTextboxDateEnter_Fa(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MbxSuppliant_ShowPer_BirthdayFa.Enter, MbxSuppliant_SearchPer_BirthdayFa.Enter, MbxSuppliant_SearchDateShamsiStartSuppliant.Enter, MbxSuppliant_SearchDateShamsiEndSuppliant.Enter, MbxEmployee_SearchDateShamsiStartEmployee.Enter, MbxEmployee_SearchDateShamsiEndEmployee.Enter, MbxEmployee_ShowPer_BirthdayFa.Enter, MbxEmployee_SearchPer_BirthdayFa.Enter, MbxConfernce_ShowTimeConference_OneDate_Shamsi.Ent er, MbxConfernce_ShowTimeConference_DateShamsiStart.En ter, MbxConfernce_ShowTimeConference_DateShamsiEnd.Ente r, MbxConfernce_SetingsDayConference_VacatePeriodDate Shamsi_Strat.Enter, MbxConfernce_SetingsDayConference_VacatePeriodDate Shamsi_End.Enter, MbxConfernce_SetingsDayConference_VacateOneDay_Sha msi.Enter, MbxConfernce_SetingsDayConference_Start_Shamsi.Ent er, MbxConfernce_SetingsDayConference_End_Shamsi.Enter
CType(sender, MaskedTextBox).BackColor = Drawing.Color.LemonChiffon
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(New System.Globalization.CultureInfo("Fa"))
End Sub

جناب آقای علی نجاری واقعا ممنون کد شما هم راه گشا بود و یه روش جدید:لبخندساده: