PDA

View Full Version : ساختن یک شی به صورت آرایه



mahmood744
سه شنبه 23 مهر 1387, 15:59 عصر
سلام بر دوستان عزیز

با VB به راحتی میشه یک شی به صورت آرایه در می آید فقط کافی است نام یک شی را تکراری وارد کنید تا VB خودش سئوال کنه که آیا می خواهید این شی به صورت آرایه باشد؟
اما در VB.NET هر کاری کردم نتونستم یک شی مثل Textbox یا LAbel را به صورت آرایه در بیارم :متفکر:
لطفا گر کسی میدونه که چگونه میشه یک شی را به صورت آرایه درآورد منو راهنمایی کنه .
Textbox1(n).TeXT

من منتظر کمک های شما دوستان هستم . با تشکر :چشمک:

mostafaaa
سه شنبه 23 مهر 1387, 17:02 عصر
راههای زیادی هست ، یکیش اینه.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim MyTextBoxs As New List(Of TextBox)
For Each CTRL As Control In Me.Controls
If TypeOf CTRL Is TextBox Then MyTextBoxs.Add(CTRL)
Next
MyTextBoxs.ForEach(AddressOf Test)
End Sub
Sub Test(ByVal sender As TextBox)
sender.Text = "Test"
End Sub

mahmood744
چهارشنبه 24 مهر 1387, 00:29 صبح
دوست عزیز راهنمایی شما خوب بود :تشویق:
اما من می خواهم که خود اشیاء به صورت آرایه باشند
و هر چند تا شی با هم یک آرایه باشند و بشود در هر جای برنامه به صورت زیر به آنها دستیابی داشته باشیم و دارای رویداد هایی آرایه ای باشند
Textbox1(1).Text="Reza"
Textbox1(2).Text="Ali"
TextBox1(3).BackColor = Color.Blue
TextBox1(2).MaxLength = 10
TextBox1(1).MaxLength = 15

دوست عزیز من این برنامه را با VB نوشتم (که سورس آن در قسمت پایین است) و آن را به VB.NET تبدیل کردم به به صورت فایل زیر در آمد
اما متاسفانه نتونستم همین کار رو مستقیم با VB.Net انجام بدم اگر کسی میدونه که چگونه میشه مستقیم چند شی رو به صورت آرایه استفاده کرد
سورس VB 24445
سورس تدبیل شده به VB.NET
24446

با تشکر از راهنمایی شما دوستان

rooshan2008
چهارشنبه 24 مهر 1387, 01:14 صبح
سلام
من دو روش بلدم
این کد :

این کد رو در بخش جنرال فرمت بنویس




Dim Textbox1 As New List(Of TextBox)
Dim Txt1 As New TextBox



این کد رو هم فرض کن داخل یک باتون بنویس که با زدن اون می خوای یک تکس باکس ایجاد بشه.




Textbox1.Add(Txt1)
Textbox1(Textbox1.Count - 1).Parent = Me

Textbox1(Textbox1.Count - 1).Show()
Textbox1(Textbox1.Count - 1).Name = "Roshan2008" & Textbox1.Count

AddHandler Textbox1(Textbox1.Count - 1).TextChanged, AddressOf TxtE


به خط آخر توجه کن این خط event مربوط به رویداد textChangeرو به تابع مربوط به اون متصل می کنه

این هم کد اون تابعی که بهش متصل میشه




Private Sub TxtE(ByVal sender As Object, ByVal e As EventArgs)
MsgBox(sender.name)
End Sub



روش دوم :
این کد رو در بخش جنرال فرمت بنویس




Dim Txt() As TextBox
Dim Count As Integer





این کد رو هم فرض کن داخل یک باتون بنویس که با زدن اون می خوای یک تکس باکس ایجاد بشه.




ReDim Preserve Txt(Count)
Txt(Count) = New TextBox
Txt(Count).Parent = Me

Txt(Count).Show()
Txt(Count).Name = "Roshan2008_" & Count
AddHandler Txt(Count).TextChanged, AddressOf TxtE
Count += 1



1-شما باید مختصات رو خودتون
2-اگه می خواید textbox شما داخل یک panel یا یک groupBox باشه باید این کد رو که بنفش شده رو این طوری بنویسید:



Txt(Count).Parent =Panel1
یا

Txt(Count).Parent =GroupBox1



امید وارم کمکتون کرده باشم

program_vb2006@yahoo.com

mostafaaa
چهارشنبه 24 مهر 1387, 09:47 صبح
دوست من اون کد DotNet که فرستادید در واقع داره از اشیا VB6 استفاده میکنه

Public WithEvents Text1 As Microsoft.VisualBasic.Compatibility.VB6.TextBoxArr ay

mahmood744
جمعه 26 مهر 1387, 17:15 عصر
با تشکر از توجه شما دوستان
دوست عزیز من که خودم گفتم برنامه را با VB نوشتم بعد آن را با VB2008به VB.Net تبدیل کردم.
من یک روشی می خوام که کد نویسی نداشته باشه و مثل VB به راحتی کار کنه و تمامی رویداد ها هم فعال باشه.:متفکر:
آخه در هر فرم من تعداد زیادی Label و Textbox وجود داره و بهترین روش و کمترین کد برنامه نویسه روش استفاده از آرایه می باشه که خطا هم کمتر پیدا می کنه.
به این علت من می خوام یک روشی رو پیدا کنم مثل VB که به راحتی بشه هر شی آرایه را جابجا کرد و کوچک و بزرگ و غیره رو انجام داد و به صورت بصری است نه به صورت کد نویسی

با تشکر از راهنمایی شما دوستان :قلب:

mahmood744
شنبه 27 مهر 1387, 17:37 عصر
با عرض سلام
واقعا کسی یاد نداره یک شی را به صورت آرایه دربیاره به راحتی VB

لطفا کمکم کنید :عصبانی++:

<برنامه نویس>
دوشنبه 18 مرداد 1389, 13:38 عصر
سلام
من دو روش بلدم
این کد :

این کد رو در بخش جنرال فرمت بنویس




Dim Textbox1 AsNew List(Of TextBox)
Dim Txt1 AsNew TextBox



این کد رو هم فرض کن داخل یک باتون بنویس که با زدن اون می خوای یک تکس باکس ایجاد بشه.




Textbox1.Add(Txt1)
Textbox1(Textbox1.Count - 1).Parent =

Me


Textbox1(Textbox1.Count - 1).Show()
Textbox1(Textbox1.Count - 1).Name =

"Roshan2008" & Textbox1.Count

AddHandler Textbox1(Textbox1.Count - 1).TextChanged, AddressOf TxtE


به خط آخر توجه کن این خط event مربوط به رویداد textChangeرو به تابع مربوط به اون متصل می کنه

این هم کد اون تابعی که بهش متصل میشه




Private Sub TxtE(ByVal sender AsObject, ByVal e As EventArgs)
MsgBox(sender.name)
End Sub


روش دوم :
این کد رو در بخش جنرال فرمت بنویس




Dim Txt() As TextBox
Dim Count As Integer

این کد رو هم فرض کن داخل یک باتون بنویس که با زدن اون می خوای یک تکس باکس ایجاد بشه.




ReDim Preserve Txt(Count)
Txt(Count) = New TextBox
Txt(Count).Parent = Me


Txt(Count).Show()
Txt(Count).Name =

"Roshan2008_" & Count
AddHandler Txt(Count).TextChanged, AddressOf TxtE
Count += 1


1-شما باید مختصات رو خودتون
2-اگه می خواید textbox شما داخل یک panel یا یک groupBox باشه باید این کد رو که بنفش شده رو این طوری بنویسید:



Txt(Count).Parent =Panel1
یا

Txt(Count).Parent =GroupBox1

امید وارم کمکتون کرده باشم

program_vb2006@yahoo.com

دوست عزیز این کد ها در vb.net خطا میده میشه توضیح بدبد باید چی کار کنم

Mani_rf
دوشنبه 18 مرداد 1389, 14:11 عصر
دوست عزیز این کد ها در vb.net خطا میده میشه توضیح بدبد باید چی کار کنم

کدوم قسمتش خطا میده؟ چه خطایی میده؟

<برنامه نویس>
دوشنبه 18 مرداد 1389, 15:24 عصر
کلا وقتی این کد رو قرار میدم خطا میده میشه یک مثال از همین کد بدید

delasaee
دوشنبه 18 مرداد 1389, 15:31 عصر
دوست عزیز مشکال از ادیتور برنامه نویس هست
بین as و new فاصله بزار

<برنامه نویس>
دوشنبه 18 مرداد 1389, 15:51 عصر
حالا این رو خطا میگیره



AddHandler Txt(Count).TextChanged, AddressOf TxtE

<برنامه نویس>
دوشنبه 18 مرداد 1389, 15:53 عصر
البته فقط از اینش TxtE

hero4000
سه شنبه 19 مرداد 1389, 09:49 صبح
خوب دوست عزيز شما تابع TxtE رو تعريف نکردي توي دستوراتي که گذاشته بودن دوباره نگاه کن ميبيني يک تابع هم به اين نام تعريف شده




Private Sub TxtE(ByVal sender AsObject, ByVal e As EventArgs)
MsgBox(sender.name)
End Sub

<برنامه نویس>
سه شنبه 19 مرداد 1389, 12:55 عصر
ممنون از راهنمایی شما من این فایل رو مطابق دستوراب بالا درست کردم اما حالا یک مشکلی دارم که بعد از ساخت شی جدید - شی قدیمی پاک میشه من می خوام قبلی هم تو صفحه بمونه

hero4000
چهارشنبه 20 مرداد 1389, 08:03 صبح
دوست عزيز کافيه خط زير رو


Textbox1.Add(Txt1)

به اين خط تغيير بدي


Textbox1.Add(New TextBox)

mahdi1373
چهارشنبه 20 مرداد 1389, 15:46 عصر
سلام،
اگه نخواهی در زمان اجرا آرایه رو بسازی می تونی از کنترل textbox array استفاده کنی.
مشابه این آرایه برای کنترل های دیگه هم هست.

<برنامه نویس>
چهارشنبه 20 مرداد 1389, 22:53 عصر
نه من در زمان احرا می خوام بسازم

hero4000
پنج شنبه 21 مرداد 1389, 08:18 صبح
چي شد آقاي <برنامه نویس> مشکلت حل شد ؟؟

nima898
پنج شنبه 21 مرداد 1389, 08:18 صبح
سلام،
اگه نخواهی در زمان اجرا آرایه رو بسازی می تونی از کنترل textbox array استفاده کنی.
مشابه این آرایه برای کنترل های دیگه هم هست.

این کنترل کجا هست باید اضافه بشه یا نه ؟ تو vb.net2005 هم هست یانه؟

hero4000
پنج شنبه 21 مرداد 1389, 08:24 صبح
ولي بايد به تولبارت اضافه کني

روي تولبارت راست کليک کن بعد گزينه Choss Item رو بزن بعدش از توي ليست اونو پيدا و اضافه کن

<برنامه نویس>
پنج شنبه 21 مرداد 1389, 22:02 عصر
دوست عزيز کافيه خط زير رو


Textbox1.Add(Txt1)به اين خط تغيير بدي


Textbox1.Add(New TextBox)


اقا مرسی مشکل حل شد .

iradata
سه شنبه 30 فروردین 1390, 15:49 عصر
سلام،
اگه نخواهی در زمان اجرا آرایه رو بسازی می تونی از کنترل textbox array استفاده کنی.
مشابه این آرایه برای کنترل های دیگه هم هست.

سلام کسی روش استفاده از textbox array روو می دونه ؟؟