PDA

View Full Version : سوال: بدست اوردن نام یک کنترل در زمان اجرا



terzdax
سه شنبه 22 بهمن 1392, 12:48 عصر
سلام
چجوری میتونم نام یک کنترل داخل فرم رو بدست بیارم و داخل یک متغییر قرار بدم در زمانی که برنامه اجرا شده است
و نمیخوام دستوری در قسمت کلیک ابجکت بنویسم
مثال :
برنامه ای داریم که با زدن یک ابجکت ران تایم 10 تا ابجکت روی فرم اضافه میشه حالا با کلیک کردن بر روی هر ابجکت اسم ان ابجکت رو در یک مسیج باکس نمایش بدم
با تشکر

alimanam
سه شنبه 22 بهمن 1392, 14:55 عصر
با سلام

از سورسی که گذاشتم میتونی استفاده کنی :


Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Static j As Integer = 0
For i As Integer = 0 To 9
Dim btn As Button = New Button()
btn.Parent = Me.Panel1
btn.Name = "Button" & j + 1
btn.Height = 26
btn.Dock = DockStyle.Top
btn.Text = "Button " & j + 1
AddHandler btn.Click, AddressOf HandleDynamicButtonClick
Panel1.Controls.Add(btn)
j += 1
Next

End Sub
Private Sub HandleDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = DirectCast(sender, Button)
MessageBox.Show(btn.Name & " clicked")
End Sub

End Class


موفق باشید./

terzdax
چهارشنبه 23 بهمن 1392, 08:02 صبح
با تشکر فراوان از جناب اقای alimanam که پاسخ کاملی دادن
فقط یک سوال برام پیش اوم که به چه طریقی میتونم بعد از اعمال تغییرات روی 10 ابجکتی که ران تایم فراخوانی شدن(از قبیل تغییر نام , تغییر فونت , تغییر سایز و غیره) بعد از بسته شدن فرم و دوباره لود شدن ان تمام تغییرات رو نمایش بدم مثلا از 10 ابجکتی که ران تایم فراخوانی کردیم 3 تا رو حذف کنیم و بعد فرم را ببندیم و دوباره فرم را باز کنیم و 7 ابجکت بر روی فرم نمایش داده شود

farhad85
پنج شنبه 24 بهمن 1392, 12:56 عصر
واقعا عالی دستت درد نکنه

alimanam
شنبه 26 بهمن 1392, 15:50 عصر
با سلام


فقط یک سوال برام پیش اوم که به چه طریقی میتونم بعد از اعمال تغییرات روی 10 ابجکتی که ران تایم فراخوانی شدن(از قبیل تغییر نام , تغییر فونت , تغییر سایز و غیره) بعد از بسته شدن فرم و دوباره لود شدن ان تمام تغییرات رو نمایش بدم مثلا از 10 ابجکتی که ران تایم فراخوانی کردیم 3 تا رو حذف کنیم و بعد فرم را ببندیم و دوباره فرم را باز کنیم و 7 ابجکت بر روی فرم نمایش داده شود

برنامه نویسی فقط سوال نیست کمی بیشتر دقت میکردین راحت باید میتونستین جوابش رو پیدا کنین .


Imports System.IO
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Static j As Integer = 0
Panel1.Controls.Clear()
For i As Integer = 0 To 9
Dim btn As Button = New Button()
btn.Parent = Me.Panel1
btn.Name = "Button" & j + 1
btn.Height = 26
btn.Dock = DockStyle.Top
btn.Text = "Button " & j + 1
AddHandler btn.Click, AddressOf HandleDynamicButtonClick
Panel1.Controls.Add(btn)
j += 1
Next

End Sub
Private Sub HandleDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = DirectCast(sender, Button)
Dim res As DialogResult = MsgBox("Do you want delete " & btn.Name & " ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question)
If res = Windows.Forms.DialogResult.Yes Then
btn.Dispose()
End If
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

Dim st As New System.Text.StringBuilder
For Each btn As Button In Panel1.Controls
st = st.AppendLine(btn.Name)
Next
My.Computer.FileSystem.WriteAllText("Buttons.txt", st.ToString, False)

End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
If My.Computer.FileSystem.FileExists("Buttons.txt") Then
Dim btnArray As String() = File.ReadAllLines("Buttons.txt", System.Text.Encoding.UTF8)

For i As Integer = 0 To btnArray.Length - 1
Dim btn As Button = New Button()
btn.Parent = Me.Panel1
btn.Name = btnArray(i)
btn.Height = 26
btn.Dock = DockStyle.Top
btn.Text = btnArray(i)
AddHandler btn.Click, AddressOf HandleDynamicButtonClick
Panel1.Controls.Add(btn)
Next
End If
End Sub

End Class


موفق باشید./

terzdax
شنبه 26 بهمن 1392, 21:42 عصر
برنامه نویسی فقط سوال نیست کمی بیشتر دقت میکردین راحت باید میتونستین جوابش رو پیدا کنین .
با تشکر از دوست عزیز اقای alimanam
حرف شما درست هستش ولی برای ما تازه کارهای دنیای برنامه نویسی راهی جز پرسش از بزرگان نیست
از قدیم گفتن ندانستن عیب نیست نپرسیدن عیب هستش
باز هم تشکر میکنم از جواب کاملی که دادین

alimanam
شنبه 26 بهمن 1392, 23:35 عصر
با سلام


حرف شما درست هستش ولی برای ما تازه کارهای دنیای برنامه نویسی راهی جز پرسش از بزرگان نیست

سوتفاهم نشه منظور من این بود که سعی کنین همیشه به اندازه کافی روی مشکلات برنامه نویسی خودتون فکر و تلاش کافی داشته باشین تا کم کم این اعتماد به نفس شکل بگیره اونوقت خودتون مطمئناً لذتش رو میبرین .


از قدیم گفتن ندانستن عیب نیست نپرسیدن عیب هستش

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

موفق باشید./