-
اینو چه جوری درست کنم ؟
ما 81 تا تکست باکس روی فرم داریم . به شکل زیر
کد:
txt1 txt2 txt3 txt28 txt29 txt30 txt55 txt56 txt57
txt4 txt5 txt6 txt31 txt32 txt33 txt58 txt59 txt60
txt7 txt8 txt9 txt34 txt35 txt36 txt61 txt62 txt63
txt10 txt11 txt12 txt37 txt38 txt39 txt64 txt65 txt66
txt13 txt14 txt15 txt40 txt41 txt42 txt67 txt68 txt69
txt16 txt17 txt18 txt43 txt44 txt45 txt70 txt71 txt72
txt19 txt20 txt21 txt46 txt47 txt48 txt73 txt74 txt75
txt22 txt23 txt24 txt49 txt50 txt51 txt76 txt77 txt78
txt25 txt26 txt27 txt52 txt53 txt54 txt79 txt80 txt81
من میخوام وقتی که توی یکی از این تکست باکس ها عددی رو ینویسم (اعداد میتونه از 1 تا 9 باشه ) اونوقت چک کنه که آیا این عدد توی اون سطر یا ستون و یا توی اون بلوک (مثلا تکست باکس های 1 تا 9 یا 37 تا 45 ) هست یا نه . اگه بود رنگ Backcolor اون تکست باکس قرمز بشه و وقتی که اصلاح شد دوباره رنگش به حالت عادی یعنی سفبد برگرده . امید وارم که منظورم رو خوب رسونده باشم.
-
از یه لیست یا آرایه استفاده کن،
با استفاده از ایندکس ، راحت میتونی کارتو انجام بدی
-
مثلا چه جوری ؟ یه مثال با کد بگید .
---------- Post added at 07:34 PM ---------- Previous post was at 07:32 PM ----------
مثلا چه جوری ؟ یه مثال با کد بزنید
-
کد:
List<TestBox> lbs = new List<TextBox>();
این تعریفش بود.
حالا
کد:
lbs.Add(textBox1);
lbs.Add(textBox2);
.
.
.
lbs.Add(textBox81);
حالا، با ایندکس مختص به لیست lbs ، میتونی برنامه رو پیاده کنی،
اونم توضیح میخوای یا خودت در موردش فکر کردی؟! :دی
---------- Post added at 07:41 PM ---------- Previous post was at 07:38 PM ----------
برای قسمت دوم، از یه حلقه foreach ، استفاده کن، که this.Controls رو بخونه، بعد چک کنه که آیا از نوع TextBox هست یا نه؟! بعدش به لیست اضافش کن،
-
نميدونم . يا شما درست سوال من رو متوجه نشديد يا من .
جواب شما اصلا شبيه اون چيزي كه من ميخوام نيست. لطفا يك بار ديگه سوال رو بخونيد
-
ساده ترین راه همونه که دوستان در بالا گفتند
ولی یه راه جالب تر برات می ذارم شاید بهتر باشه.
یه کنترلی هست که ارایه ای از کنترل های دیگه مثل همون تکست باکس یا دکمه و ... رو در خودش نگه م یداره و بصورت دستی می تونی کنترل ها را بهش اضافه یا حذف کنی.
رویداد های تمامی این کنترل ها هم بصورت مشترک در رویدهادهای همان کنترل ارایه قایل دسترسی هستند.
مثلا واسه مثالی که خودت زدی , کنترل آرایه رو که بصورت DLL هست رو به پروژه ات اضافه کن تا در تول باکس کنترل جدیدی به نام Control array اضافه شود. حالا کنترل رو بنداز رو فرمت, در سینی کامپوننت های فرم اضافه می شود و با راست کلیک بر روی آن و انتخاب زیر منوی Add or remove controls می تونی کنترل های تکست باکس رو بهش اضافه کنی.
حالا تمامی کنترل های تکست باکس شما رویدادهای مشترکی خواهند داشت که برای گرفتن ایندکس هر کنترل در آرایه می تونی مشابه با زیر عمل کنی. مثلا نام کنترل ارایه شما Controlarray1 هست
if arraycontrol1.controls.indexof(sender)=2 then
control array1.controls(2).backcolor=Color.Blue
end if
اگه سوالی بود مطرح کن
لینک دانلود کنترل
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-
اصلا مشکل من آرایه نیست . سوال من اینه که :
من میخوام وقتی که توی یکی از این تکست باکس ها عددی رو ینویسم (اعداد میتونه از 1 تا 9 باشه ) اونوقت چک کنه که آیا این عدد توی اون سطر یا ستون و یا توی اون بلوک (مثلا تکست باکس های 1 تا 9 یا 37 تا 45 ) هست یا نه . اگه بود رنگ Backcolor اون تکست باکس قرمز بشه و وقتی که اصلاح شد دوباره رنگش به حالت عادی یعنی سفبد برگرده .
در ضمن آدرسی رو که گذاشتید ف + ی + ل + ت + ر هست .
-
خوب دقیقا منظور بنده هم همین بود.
شما ایندکس تکست باکس رو می گیری مثلا 10 حالا با توجه به قواعد خودت متن این کنترل یعنی کنترل با ایندکس 10 رو یا متن مجموعه ای از ایندکس سایر دکمه ها مقایسه کن اگر شرایط برقرار بود رنگش رو قرمز کن کن
یه مثال ساده برات می ذارم
فرض کن 9عدد کنترل تکست باکس داریم با ایندکس های 0 تا 8 که در یک کنترل ارایه به نام controlarray1 قرار دارند.
حالا در رویداد Textchange کنترل ارایه می تونیم شرایط رو چک کنیم
اول ایندکس کنترل تکست باکس فعلی رو می گیریم
Dim a as integer=controlarray1.controls.indexof(sender)
حالا ایندکس کنترلی رو که کاربر در حال تایپ هست داریم.
الان باید چک کنیم که ایا عدد این تکست باکس با عدد موجود در کنترل های پنجم و هشتم یکسان است یا نه؟
If ControlArray1.Controls(a).Text = ControlArray1.Controls(5).Text then
ControlArray1.Controls(a).BackColor = Color.Red
else
..........................................
-
ببینید کد شما مشکلی نداره ولی این کد برای زمانی که تعداد کنترل ها کم باشه همون طور که خودتون گفتید و میشه همه کنترل ها رو یکی
یکی چک کرد ولی اگه خوب به سوال من دقت کرده باشید 81 کنترل تکست باکس هست اینجا دیگه نمیشه از کد شما استفاده کرد . اول باید
بفهمید که کاربر توی کدوم تکست باکس مقدار وارد کرده که این مشکلی نیست مثلا فرض کنید باتوجه به چینش تکس باکس هایی که من توی
سوال گفتم توی تکست باکس 41 یک مقدار قرار داده بشه . حالا ما باید چک کنیم که در تکست باکس های 29،32،35،38،44،47،50،53
مقداری رو که توی تکست 41 نوشتیم وجود داره یا نه اگه داشت که رنگ تکس 41 قرمز میشه واگه نه که سفید . الآن ما فقط ستون مورد نظر رو
چک کردیم در حالی که باید سطر مورد نظر و همچنین بلوک مورد نظر رو هم چک کنیم . اگه توی تکس باکس 41 مقداری وارد شده باشه سطر و
ستون و بلوک هایی که باید چک بشه مثل زیر میشه :
سطر : 13،14،15،40،42،67،68،69
ستون : 29،32،35،38،44،47،50،53
بلوک : 37 ، 38 ، 39 ، 40 ، 42 ، 43 ، 44 ، 45
فکر کنم که دیگه خوب توضیح داده باشم و فهمیده باشید که چی میخوام
-
من خیلی شفاف توضیح دادم!
معلومه اشراف درستی بر دستورات c# ندارین، توصیه میکنم کتابی رو در این زمینه مطالعه کنین