PDA

View Full Version : سوال: ساخت آرايه اي از ابزار ها



pooya1072
جمعه 23 دی 1390, 14:20 عصر
با سلام
مي خواهم در برنامه ام چندين TextBox با يك نام مشترك ولي اندكس هاي متوالي ايجاد كنم . به عنوان مثال :

TextBox1(0).Text="a"
TextBox1(1).Text="b"
TextBox1(2).Text="c"

توي vb6 به راحتي و با كپي كردن يكي از ابزا ها و paste كردن آنها سوالي ميشد مبني بر اينكه آيا مي خواهيد با همان نام و به عنوان آرايه كپي شود ؟.... ولي توي vb.net نمي دونم لز چه راهي انجام مي شه . من از vb.net 2010 استفاده مي كنم.با تشكر

shadi khanum
جمعه 23 دی 1390, 14:38 عصر
تا جایی که من میدونم توی .Net نمیشه کنترل هایی با نام یکسان داشته باشیم . اگه میخوای آرایه ای از کنترل داشته باشی بصورت RunTime میتونی این کارو بکنی که البته اونجا هم اگه بخوای کنترل هاتو به from اضافه کنی حتما باید اسامیشون مجزا از هم باشه

Hybrid
جمعه 23 دی 1390, 15:10 عصر
سلام ، در این رابطه یه خبر خوب هست و یه خبر بد !

خبر بد اینه که شما نمیتونین به راحتی vb6 این کار رو انجام بدین و خبر خوب اینه که شما میتونین این کار رو با انعطاف پذیری بیشتری در vb.net 2010 انجام بدین یه مثال براتون زدم امیدوارم جوابتون رو بگیرین ....

1) سه تکست باکس و یه Button رو بر روی فرم قرار بدین..

2) به پنجره Code Editor برین و در بالای تمامی رویداد های کد زیر رو قرار بدین.

Dim textBox(2) As TextBox
(( این خط کد آرایه ای از کنترل ها از نوع تکست باکس رو براتون میسازه))

3) در رویداد کلیک دکمه کد زیر رو قرار بدین

textBox(0) = TextBox1
textBox(1) = TextBox2
textBox(2) = TextBox3

textBox(0).Text = "Hello textbox1"
textBox(1).Text = "hello textbox2"
textBox(2).Text = "hello textbox3"

4) برنامه رو دیباگ کرده و نتیجه رو مشاهده کنید.

موفق باشید./

pooya1072
جمعه 23 دی 1390, 18:50 عصر
تا جایی که من میدونم توی .Net نمیشه کنترل هایی با نام یکسان داشته باشیم . اگه میخوای آرایه ای از کنترل داشته باشی بصورت RunTime میتونی این کارو بکنی که البته اونجا هم اگه بخوای کنترل هاتو به from اضافه کنی حتما باید اسامیشون مجزا از هم باشه

با تشكر ... مي خوام بدونم آيا روش پيشنهاديه شما تقريباً شبيه روش دوستمون The Life هست ؟ اگر آره كه ممنون ،و اگر نه لطف كنيد بيشتر در موردش توضيح بديد تا من با روش شما هم آشنا بشم...

sari-1369
شنبه 24 دی 1390, 00:51 صبح
http://barnamenevis.org/showpost.php?p=718173&postcount=11

shadi khanum
شنبه 24 دی 1390, 11:35 صبح
چیزی که من گفتم همینیه که دوستمون گفته فقط حواست باشه که با این روش اسم کنترل هات شبیه هم نیستن و مثل این میمونه که سه تا textbox با اسم های txt1 , txt2,txt3 درست کردی و بعد اون سه تا رو تو یه آرایه از textbox ریختی

pooya1072
شنبه 24 دی 1390, 23:14 عصر
سلام ، در این رابطه یه خبر خوب هست و یه خبر بد !

خبر بد اینه که شما نمیتونین به راحتی vb6 این کار رو انجام بدین و خبر خوب اینه که شما میتونین این کار رو با انعطاف پذیری بیشتری در vb.net 2010 انجام بدین یه مثال براتون زدم امیدوارم جوابتون رو بگیرین ....


Dim textBox(2) As TextBox
(( این خط کد آرایه ای از کنترل ها از نوع تکست باکس رو براتون میسازه))

3) در رویداد کلیک دکمه کد زیر رو قرار بدین

textBox(0) = TextBox1
textBox(1) = TextBox2
textBox(2) = TextBox3

textBox(0).Text = "Hello textbox1"
textBox(1).Text = "hello textbox2"
textBox(2).Text = "hello textbox3"

موفق باشید./



سلام مجدد...

من كد شما رو اجرا كردم ، ولي اجرا نمي شه.خطايي كه ميده اينه كه " متغيري كه استفاده كرده ايد يك مقدار اوليه نگرفته " اگه يادتون باشه توي vb6 از دستور set براي دادن مقدار اوليه استفاده ميشد.در كل من نتونستم نتيجه اي بگيرم. اگه زحمتي نيست اين مشكلش رو هم حل كنيد. بايد از NEW استفاده كنيم.حالا چطوري همون قسمت سخت ماجراست . در هر حال ازتون متشكرم .



Dim textBox(2) As TextBox
textBox(0) = TextBox1........روي اين خط خطا ميده
textBox(0).Text = "Hello textbox1"

meisam3322
یک شنبه 25 دی 1390, 00:10 صبح
متن پیغام رو میزارین تا دقیقا مشخص شه مشکل چیه ؟

shadi khanum
یک شنبه 25 دی 1390, 08:14 صبح
این sample رو ببین. امیدوارم به دردت بخوره

Hybrid
یک شنبه 25 دی 1390, 09:14 صبح
سلام دوست عزیز روی کامپیوتر من هیچ اشکالی رو نمیگیره همه ی کدی رو که نوشتم رو ببینین :


Option Explicit On
Option Strict On
Public Class Form1
Dim textBox(2) As TextBox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


textBox(0) = TextBox1
textBox(1) = TextBox2
textBox(2) = TextBox3

textBox(0).Text = "Hello textbox1"
textBox(1).Text = "Hello textbox2"
textBox(2).Text = "Hello textbox3"

End Sub
End Class


موفق باشید./

pooya1072
یک شنبه 25 دی 1390, 22:50 عصر
با تشكر از همه دوستان كه كمك كردند . حالا من اگه بخوام با يك حلقه مثلاً تعداد 20 تكست باكس رو توي يك آرايه قرار بدم بايد چكار كنم . اونطوري كه دوستمون The Life گفت براي يك يا دو تكست باكس مي تونستيم به اين روش عمل كنيم :

Dim textBox(2) As TextBox
textBox(0)=TextBox1
textBox(1)=TextBox2
textBox(2)=TextBox3

حالا اگه تعداد تكست باكس ها خيلي بيشتر باشه ، مثلاً 60 تا ، اونوقت بايد از چه روشي استفاده كنيم ؟

shadi khanum
یک شنبه 25 دی 1390, 23:00 عصر
اگه کنترل های textbox رو توی فرمت داری و میخوای به یه آرایه Add کنی باید روی me.controls حلقه بزنی و اگه تایپ اون کنترل textbox بود اون رو به آرایت اضافه کنی. اگر هم میخوای توی کد این textbox ها رو ایجاد کنی باز هم باید یه حلقه بزنی (حالا به هر تعداد که میخوای ) و توی اون شی textbox، new کنی و به آرایه add کنی
موفق باشی

M.T.P
یک شنبه 25 دی 1390, 23:36 عصر
Dim Txt(5) As TextBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer

For i = 0 To 5
Txt(i) = New TextBox
Me.Controls.Add(Txt(i))
Txt(i).Location = New Point(20, i * 30)
Next
End Sub