فرض کنين من 10 تا button دارم ميخوام تو يه حلقه اسمه اونا رو عوض کنم من اين کرو کردم ولی نشد
For i = 0 To 10
Me.Controls.Item("Button" & i).Name = i
Next
ولی قبول نميکنه من 3 روشه ديگه هم امتحان کردم ولی بازم کار نميکنه
اگه ميشه همفکری کنين
Printable View
فرض کنين من 10 تا button دارم ميخوام تو يه حلقه اسمه اونا رو عوض کنم من اين کرو کردم ولی نشد
For i = 0 To 10
Me.Controls.Item("Button" & i).Name = i
Next
ولی قبول نميکنه من 3 روشه ديگه هم امتحان کردم ولی بازم کار نميکنه
اگه ميشه همفکری کنين
من اينو گير اوردم کسی ساده تر از اين سراغ داره؟
Public Function GetControlByName(ByVal Name As String) As Object
''now, why would I put a "_" in front of the name?
Dim info As System.Reflection.FieldInfo = Me.GetType().GetField("_" & Name, _
System.Reflection.BindingFlags.NonPublic Or _
System.Reflection.BindingFlags.Instance Or _
System.Reflection.BindingFlags.Public Or _
System.Reflection.BindingFlags.IgnoreCase)
If info Is Nothing Then Return Nothing
Dim o As Object = info.GetValue(Me)
Return o
End Function
سلام
1- برای چه میخواهید اسم را تغییر بدهید؟؟؟؟
2- کد دوم را در چه کلاسسی استفاده میکنید؟؟؟ در خود کلاسس فرم مینویسید؟؟؟؟ این کد بدون شک نام چیزی را تغییر نمیدهد!
3- کد اولی خودتان کاملاً صحیح است و باید جواب دهد، اگر کار نمیکند، حتماً یا نام را غلط میدهید یا ظرف را!
من اين كد رو استفاده ميكنم ببين كمكت ميكنه؟:46:
موفق باشي:10:کد:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For i As Int16 = 1 To 5
Me.Controls(i).Name = "a" & (i)
Next
End Sub
مثل اينکه من نتونستم منظورم رو درست بيان کنم فرض کنين من به يه function نياز دارم که با دادن اسم يک ،آبجکت رو بهم بده مثله زير
کد:Public Function NameToControl(ByVal Name As String) As Object
شايد براتون سؤال پيش بياد که چرا به اين نياز دارم--- بخاطره اين که من 52 تا کليد دارم که اگه بخوام واسه هر تغييری 53 بار کد رو تکرار کنم پدرم در مياد
سلام
همانطور که قبلاً گفتم کد اولی تان صحیح است و همچین تابعی داریم و نیاز نیست شما آن را بسازید!
مثل این کد
اگر جواب نمیدهد یا مشکل در نام است یا ظرف و لاغیر!کد:For i AsInteger = 0 To 15
Me.Controls("CommonName" & CStr(i)).Visible = False
Next
مثلاً کد فوق
نام ها را چنین در نظر گرفته تا جواب دهد
CommonName0
CommonName1
CommonName2
...
CommonName9
CommonName10
...
نه اینطور
CommonName00
CommonName01
CommonName02
....
CommonName09
CommonName10
...
البته برای سری دوم هم میتوان دستور نوشت ولی مقصودم آن است که حواستان به نام ها باشد.
ظرف هم یعنی چیزی که کنترلرهایتان روی ان قرار گرفته اند در حالت عادی ظرف همان فورمتان است ولی اگر از Panel یا TabControl و... استفاده کنید و کنترلارها را روی انها بچینید، طبیعتا آنها ظرف کنترلرهایتان محصوب میشوند و به جای جستجو در Me باید در آنها دنبال کنترلرهایتان بگردید.
اگر به دو نکته فوق دقت کنید، کد فوق باید جواب دهد و میدهد و نیازی به تابعی خاصی ندارید.
البته میتوانید کنترلرها را در یک ارایه جا دهید تا بتوانید به راحتی با ایندکس دهی به اعضا دسترسی داشته باشید.
چرا 52 کلید مستقل تعریف می کنی تا مجبور بشی 52 task تعریف کنی؟