PDA

View Full Version : چطوری میشه به یه متغیر از روی نامش در حالت string دسترسی داشت؟



combo_ci
چهارشنبه 02 دی 1388, 17:40 عصر
سلام
کسی میدونه چطوری میشه از روی نام به متغیر در حالت string بهش دسترسی داشت؟
مثلا من تو یه فرم از برنامم به نام frm_user یه متغیر دارم به نام "allowEdit"
حالا این string رو از جایی خوندیم میخوایم به این متغیر یا property از یه فرم دیگه مقدار بدیم
ممنون

Mani_rf
پنج شنبه 03 دی 1388, 00:32 صبح
اگر منظور شما را درست متوجه شده باشم شما می خواهید به متغیری که در فرمی دیگر تعریف کرده این دسترسی پیدا کنید!
برای انجام این کار شما باید یک شرط را رعایت کنید و آن این است که متغیر شما باید از نوع عمومی باشد. ساده ترین راه برای تعریف یک متغیر عمومی در VB.Net چنین است به جای استفاده از کلمه کلیدی Dim از Public استفاده نمایید.
در فرمی که می خواهید متغیر را داشته باشید (مثلا From2) در خارج از رویداد ها:


Public Variable as String = String.Empty

و در فرمی که می خواهید آن را فراخوانی کنید :


Form2.Variable = "Test String"

combo_ci
پنج شنبه 03 دی 1388, 08:41 صبح
نه من منظورم اینه که مثلا از توی database نام اون متغبر رو خوندیم و ریختیمش توی یک string
مثلا

ِDim temp as String ="Variable"
حالا من میخوام یه طوری از روی این string که دقیقا همنام اونمتغیر هست به متغیر دسترسی داشته باشم

Microsoft.net
پنج شنبه 03 دی 1388, 19:47 عصر
برای این کار می تونی از 2 روش استفاده کنی روش اول که روش آسون تری هست ولی کمی کندتر هست و بجا مانده از vb6 هست استفاده از دستور CallByName هست و روش دوم که به قول امروزی ها دات نتی تر هست استفاده از روش Invoke هست که فکر می کنم با کمی جستجو در msdn و اینترنت و ... به راحتی به تمامی امکانات این دو روش پی ببری و چیزی هم که خواستی ب هر 2 روشی که گفتم به راحتی قابل انجام هست .

combo_ci
پنج شنبه 03 دی 1388, 21:19 عصر
invoke کردن برای صدا زدن یک متد از خارج از کلا س هست فک کنم
یه مثال کوچولو از نحوه صدا زدن متغیر میزنید برام؟

combo_ci
پنج شنبه 03 دی 1388, 21:27 عصر
راستش من با این کد تونستم به خود آبجکت دسترسی داشته باشم

Dim typearr As Type() = [Assembly].GetEntryAssembly.GetTypes

For Each type_inTypeArr As Type In typearr
If type_inTypeArr.Name.ToLower = "setting" Then
Dim myField As FieldInfo() = type_inTypeArr.GetFields()
Dim f As FieldInfo = type_inTypeArr.GetField("Fac_Fro_BedTejary")
End If
Next
اما به فیلد ها و پراپرتی های متغیر دسترسی ندارم

combo_ci
جمعه 04 دی 1388, 11:13 صبح
it work with this code

Dim typearr As Type() = [Assembly].GetEntryAssembly.GetTypes
For Each type_inTypeArr As Type In typearr
If type_inTypeArr.Name.ToLower = "setting" Then
Dim myField As FieldInfo() = type_inTypeArr.GetFields()
Dim Field As FieldInfo = type_inTypeArr.GetField("t1").FieldType.GetField("t2")
Dim i As Integer = Field.GetValue(Field)
End If
Next