PDA

View Full Version : سوال: چطوری توی یک ماژول میشه از اشیای موجود در یک فرم استفاده کرد؟



Jalalkhan
دوشنبه 22 آذر 1389, 02:06 صبح
من برای یک پروژه باید از کنسول (vb.net) استفاده کنم، این برنامه یک ماژول و یک فرم داره. من یک Label توی فرم دارم که میخام از توی ماژول دستور پر کردنشو بدم! (یعنی مثلاً از توی ماژول بگم برو توی فرم، متن اون Label رو بکن "a")


63527
نمیدونم چرا ایراد رفرنس میگیره!
Reference to a non-shared member requires an object reference

کسی هست که بتونه به من کمک کنه! واقعاً گیر افتادم :افسرده:

Rezahak
دوشنبه 22 آذر 1389, 08:54 صبح
دوست عزیز شما باید اول یک instance از فرم بسازی مثلا بنویسی :

dim frm as new form1
frm.label1.text="a"

ali_najari
دوشنبه 22 آذر 1389, 09:19 صبح
دوست عزيز چرا از اين روش استفاده ميكنيد؟
شما كافيه كه واسه تابعت Object معرفي كنيد و از طريق اون بصورت اتوماتيك ان را پر كنيد.
به عنوان مثال:


Public Sub Main(Byval Sender as Object)
if typeof Sender is Label then
directcast(sender,Label).text = "Test String"
elseIf typeof Sender is Textbox then
directcast(sender,Textbox).text = "Test String
end if

End Sub
طريقه استقاده:


Main(Label1)
Main(Textbox1)

reza_edu
سه شنبه 23 آذر 1389, 08:46 صبح
سلام دوستان من از کد زیر استفاده میکنم به نظر شما این کار درسته یانه؟

Global.[اسم برنامه].form1.[شئ مورد نظر]

Alghoochi
سه شنبه 23 آذر 1389, 11:18 صبح
از این کد و روش های مشابه زمانی می تونی استفاده کنی که شیئ به صورت public یا friend تعریف شده باشه ولی اگه به صورت private باشه نمی تونی به توابع و ویژگی های شیئ دسترسی داشته باشی.
می تونی از روشی که ali_najari گفتن استفاده کنی. در صورتی که تعداد اشیاء زیاده می تونی اونا رو به صورت public تعریف کنی و از کد پست اول استفاده کنی.

Jalalkhan
سه شنبه 23 آذر 1389, 12:44 عصر
دقیقاً این روش مشکل منو حل کرد!
واقعاً ممنونم

دوست عزیز شما باید اول یک instance از فرم بسازی مثلا بنویسی :

dim frm as new form1
frm.label1.text="a"

Jalalkhan
سه شنبه 23 آذر 1389, 12:55 عصر
راستشو بخواین من کدنویسیم افتضاحه :دی
روشی که ali-najari گفتنو نفهمیدم!
مشکل اصلی که بهش برخوردم اینه که توی فرمم یه دونه Progressbar دارم و باید دستور پر شدنشو از توی ماژولم بدم،
با روشی که reza-hak گفتن برنامه ازم error نمیگیره، اما Progressbar پر نمیشه:(
ولی تا همینجاشم از همتون متشکرم:) ایشالا جبران کنم

Rezahak
سه شنبه 23 آذر 1389, 14:48 عصر
کدت رو بذار واست درستش کنم

ali_najari
سه شنبه 23 آذر 1389, 14:56 عصر
دوست عزيز نياز به درست كردن نيست!
اون كدي كه من گذاشتم رو ميتونيد خيلي راحت ازش استفاده كنيد!
فقط كافيه اون تيكه تبديل كنترل را (DirectCast) رو به progressBar تبديل كنيد و مقدار Text را به value و از اون كد براحتي استفاده كنيد.

Jalalkhan
یک شنبه 28 آذر 1389, 12:15 عصر
مرسی!!!!!!!
درست شد:دی
از هردوی شما دوستان عزیز ممنونم:)