PDA

View Full Version : سوال: ایندکس اشیا



JaVa
دوشنبه 07 فروردین 1391, 20:00 عصر
با عرض سلام و خسته نباشید به دوستان گرامی...

در زبان vb 6 وقتی می خواستیم آرایه ای از اشیا درست کنی از شی مورد نظر مثلا باتون یه کپی می گرفتیم و بعد Paste می کردیم.

در زبان VB.NET چطور میشه این کارو کرد ؟

با تشکر پیشاپیش از همتون!:بوس:

فرید نجفلو
دوشنبه 07 فروردین 1391, 20:36 عصر
اگه منظورت کپی و پیست تو زمان طراحی باشه که بازم همون شکلیه(که فکر نکنم اینو بگی!)
اما اگه منظورت این باشه که مثلا بنویسی Buttn(i).Text باید تو زمان اجرا اونا رو بریزی تو یه List(Of Buttn)l بعد استفاده کنی!
موقع طراحی و بدون کدنویسی نمیشه!

JaVa
دوشنبه 07 فروردین 1391, 20:54 عصر
با سلام و تشکر ...



اگه منظورت کپی و پیست تو زمان طراحی باشه که بازم همون شکلیه(که فکر نکنم اینو بگی!)
اما اگه منظورت این باشه که مثلا بنویسی Buttn(i).Text باید تو زمان اجرا اونا رو بریزی تو یه List(Of Buttn)l بعد استفاده کنی!
موقع طراحی و بدون کدنویسی نمیشه!


من می خوام چیزی مثل اینو بنویسم.
که من چند تا GroupBox دارم و در هر کدومشون هم چند تایی Textbox ,Button ،... وجود داره که در هر زمان فقط یک GroupBox نمایش داده بشه
توی vb اینکار می کردم.


Dim i As Integer
For i = frm_pack.LBound To frm_pack.UBound
frm_pack(i).Visible = False
Next

frm_pack(4).Visible = True


باز هم تشکر...

Hybrid
دوشنبه 07 فروردین 1391, 20:58 عصر
اگه منظورت کپی و پیست تو زمان طراحی باشه که بازم همون شکلیه(که فکر نکنم اینو بگی!)
اما اگه منظورت این باشه که مثلا بنویسی Buttn(i).Text باید تو زمان اجرا اونا رو بریزی تو یه List(Of Buttn)l بعد استفاده کنی!
موقع طراحی و بدون کدنویسی نمیشه!


سلام ، راه حلتون درسته ولی راه بهترش اینه که همه ی اشیا رو داخل آرایه ای از اون نوع قرار بدین ( Control Array ) مثل قطعه کد زیر :


Dim textbox(4) As TextBox

این روش جایگزین روش قبلی که در vb6 با کپی و Paste کردن کنترل رایج بود شده.

در ضمن جزئ اون بحث های تکراری هم هست :

سوال: نحوه آرایه ای کردن اشیا (http://barnamenevis.org/showthread.php?332310-%D9%86%D8%AD%D9%88%D9%87-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%D8%A7%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%B4%DB%8C%D8%A7&highlight=%D8%A2%D8%B1%D8%A7%DB%8C%D9%87)
array control in VB.net (http://barnamenevis.org/showthread.php?4068-array-control-in-VB.net&highlight=Control+array)

Control Array در دات نت (http://barnamenevis.org/showthread.php?65768-Control-Array-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA&highlight=Control+array)

فرید نجفلو
دوشنبه 07 فروردین 1391, 21:10 عصر
سلام ، راه حلتون درسته ولی راه بهترش اینه که همه ی اشیا رو داخل آرایه ای از اون نوع قرار بدین ( Control Array ) مثل قطعه کد زیر :


Dim textbox(4) As TextBox

این روش جایگزین روش قبلی که در vb6 با کپی و Paste کردن کنترل رایج بود شده.

در ضمن جزئ اون بحث های تکراری هم هست :

سوال: نحوه آرایه ای کردن اشیا (http://barnamenevis.org/showthread.php?332310-%D9%86%D8%AD%D9%88%D9%87-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87-%D8%A7%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%B4%DB%8C%D8%A7&highlight=%D8%A2%D8%B1%D8%A7%DB%8C%D9%87)
array control in VB.net (http://barnamenevis.org/showthread.php?4068-array-control-in-VB.net&highlight=Control+array)

Control Array در دات نت (http://barnamenevis.org/showthread.php?65768-Control-Array-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA&highlight=Control+array)

دقت کنید که 4 شما را محدود به استفاده از 5 کنترل را می دهد که از کنترل 6 ام باید متغیر را ReDim کنید!
و اینکه بنظرم ایشون می خوان کنترل های موجود رو تو یه لیست داشته باشن که باید یک به یک و داخل یک حلقه این کار رو بکن (یا LINQ)!

JaVa
دوشنبه 07 فروردین 1391, 21:15 عصر
اما اگه منظورت این باشه که مثلا بنویسی Buttn(i).Text باید تو زمان اجرا اونا رو بریزی تو یه List(Of Buttn)l بعد استفاده کنی!
موقع طراحی و بدون کدنویسی نمیشه!


سر در نیوردم میشه یه مثال بزنید. متشکر از شما دوست گرامی...

فرید نجفلو
دوشنبه 07 فروردین 1391, 21:28 عصر
مثال:

Dim lstBtn As New List(Of Button) 'You Can Declare This As Private or Public to use in other Codes
'Finding Button1 , Button2 , Button3 , ... , ButtonX
For Each ctrl In Me.Controls
'Check Control is a Button
If TypeOf ctrl Is Button AndAlso _
InStr(ctrl.Name, "Button") <> 0 Then 'Check Name contains "Button"
lstBtn.Add(ctrl)
End If
Next
'Use List Here

Hybrid
دوشنبه 07 فروردین 1391, 21:28 عصر
حرفتون وقتی که در زمان اجرا کنترل ها رو نسبت میدین مثلا وقتی که در زمان اجرا 2 کنترل تکست باکس رو ایجاد میکنین ( چون در زمان طراحی تعداد مثلا تکست باکس ها رو میدونیم و طبیعی هست که ایندکس رو استاتیک تعریف میکنیم) صحیح است ، در رابطه با LINQ در نظر بگیرین که باید .net FrameWork رو به 3.5 ارتقا بدین این شاید دوستمون لازم داشتن که از 2 استفاده کنن پس طبیعتا نمیتونن استفاده کنن ،

فرید نجفلو
دوشنبه 07 فروردین 1391, 22:21 عصر
حرفتون وقتی که در زمان اجرا کنترل ها رو نسبت میدین مثلا وقتی که در زمان اجرا 2 کنترل تکست باکس رو ایجاد میکنین ( چون در زمان طراحی تعداد مثلا تکست باکس ها رو میدونیم و طبیعی هست که ایندکس رو استاتیک تعریف میکنیم) صحیح است

حرف شما متین ولی اگه دوستمون بخوان یک کنترل دیگه به فرم اضافه کننباید دوباره بیان تو کد 4 رو به 5 و فردا 5 رو به 6 و ... تغییر بدن
و اگه بخوان تو ران تایم به صورت دینامیکی کنترل ایجاد کنن که دیگه ...


در رابطه با LINQ در نظر بگیرین که باید .net FrameWork رو به 3.5 ارتقا بدین این شاید دوستمون لازم داشتن که از 2 استفاده کنن پس طبیعتا نمیتونن استفاده کنن ،

؟؟؟؟
بنده نوشتم :

(یا LINQ)!

تحلیل این مقاله خیلی عمیق:
1-از پرانتز ها می شود فهمید که این یک توضیح اضافه است
2- از یا هم درک می شود که این یک پیشنهاد است که در استفاده از آن مختارند
3- از علامت ! هم این برداشت می شود که من هنوز هم از هدف و روش ایشون اطلاع و اطمینان کامل ندارم

پانویس:
در کد ارائه شده هم از حلقه استفاده شده نه LINQ !

:قهقهه::قهقهه::قهقهه:

سایر دوستان هم این مطالب را کل کل فرض ننموده و توجه کنند که من به ایشان اردت ویژه ای دارم(خودشم می دونه:چشمک:)

:قهقهه::قهقهه::قهقهه:

Hybrid
دوشنبه 07 فروردین 1391, 22:29 عصر
فرید جان قربانت ، امیدوارم که بی ادبی نکرده باشم خودت از من استادتری که برای حل یک مسئله راه حل های مختلفی وجود داره که هر کدوم میتونه در شرایطی مفید باشه ، دقیقا مصداقش همین موضوع هست ،

من یک راه حل رو گفتم و شما هم یک راه حل که هر کدوم میتونه به طریقه مشابه مسئله رو حل کنه . این روش رو حدودا 5 ماهه پیش در یک سایت خارجی خوندم که این روش جایگزین روش قبلی که در vb6 با کپی و Paste کردن کنترل رایج بود شده همین!! حالا شما هم راه حل دیگش رو گفتین !!


سایر دوستان هم این مطالب را کل کل فرض ننموده و توجه کنند که من به ایشان اردت ویژه ای دارم(خودشم می دونه:چشمک:)ما بیشتر ( خودت هم میدونی !!)

موفق و سربلند باشین./