PDA

View Full Version : سوال: عملکرد یک فرم همانند یک فانکشن ؟



محسن بابائی
پنج شنبه 10 مرداد 1387, 12:34 عصر
سلام
چطوری میشه یه فرم را مثل یه فانکشن صدا زد یعنی فرم خروجی داشته باشه . مثلا دکمه close را که زد یه مقدار به فرمی که صداش زده بفرسته .

ezamnejad
پنج شنبه 10 مرداد 1387, 13:18 عصر
لينك زير را ببينيد ...
http://barnamenevis.org/forum/showthread.php?t=103542

محسن بابائی
شنبه 12 مرداد 1387, 11:01 صبح
سلام .
من که تو این لینکی که گذاشتین نتونستم چیزی پیدا کنم .
بزراین سوالم را اینجوری بپرسم :
توی برنامم یه فرم Parent دارم بقیه فرم ها فرزندان این فرم هستند . موقع صدا کردن فرم ها به این صورت عمل می کنم :


Private Sub menu1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu1.Click
Dim myfrm1 As New frm1
myfrm1 .MdiParent = Me
myfrm1 .Show()
End Sub

ممکنه کاربر دوبار این فرم را باز کنه (یعنی دوبار کلیک کنه و دوتا فرم از یک فرم باز بشه ) (نیاز دارم که اینجوری باشه) حالا تو فرمی که باز میشه کاربر می تونه اسم مشتری را از توی یه فرم دیگه(با استفاده از لینکی که وجود داره)انتخاب کنه . حالا مشکلی که هست اینه که نمودنم چه طوری این مشخصات را به فرم صدا زننده بفرستم .
ببخشید که اگر زیادی توضیح دادم .

ezamnejad
شنبه 12 مرداد 1387, 15:31 عصر
با سلام
شما ميتونيد متغيرهايي به صورت public shared تعريف كنيد و در قسمتهاي مختلف برنامه از انها استفاده كنيد .


Public Shared varName As Integer

اگر اين متغير در Form1 تعريف شده باشه براي استفاده در فرمهاي ديگر ...


intN=Form1.varName

reza6384
شنبه 12 مرداد 1387, 17:08 عصر
استفاده از متغیر Public Shared و دسترسی به اون از سایر فرم ها باعث ایجاد Warning میشه. یک متغیر Global در فرم تعریف کنید و بعد یک تابع توی فرم بدین شکل بنویسید :



Public Class Form1

Private MyValue As Integer

Function ReturnSomeValue() As Integer
Me.ShowDialog()
'-> خط بعدی وقتی اجرا میشه که کاربر فرم رو ببنده
'-> Please initialize MyValue In FormLoad
Return MyValue
End Function

End Class


برای فراخوانی از یک فرم دیگه این کد رو اجرا کنید :



Dim FRM as new Form1
Dim K as integer = FRM.ReturnSomeValue()

BAHAL_KEYHAN
شنبه 12 مرداد 1387, 19:10 عصر
Private Sub menu1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu1.Click
Dim myfrm1 As New frm1
myfrm1 .MdiParent = Me
myfrm1 .Show()
End Sub


در واقع شما هر بار که این کد را اجرا کنید یک فرم جدید ساخته میشه و چون فرم هابه صورت محلی هستن دسترسی به اونا از طریق اسمشون هر موقع که از تابع خارج میشیم از بین میره ولی مشکلی در عملکردشون بوجود نمیاد یعنی event هاو methodهای ان بر سر جای خود عملکردشونو دارند.منظورتون ازمشخصات را به فرم صدا زننده بفرستید چیه ؟

محسن بابائی
یک شنبه 13 مرداد 1387, 09:17 صبح
Private Sub menu1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menu1.Click
Dim myfrm1 As New frm1
myfrm1 .MdiParent = Me
myfrm1 .Show()
End Sub


در واقع شما هر بار که این کد را اجرا کنید یک فرم جدید ساخته میشه و چون فرم هابه صورت محلی هستن دسترسی به اونا از طریق اسمشون هر موقع که از تابع خارج میشیم از بین میره ولی مشکلی در عملکردشون بوجود نمیاد یعنی event هاو methodهای ان بر سر جای خود عملکردشونو دارند.منظورتون ازمشخصات را به فرم صدا زننده بفرستید چیه ؟

منظور اطلاعات مشتری هست که گفتم .

محسن بابائی
دوشنبه 14 مرداد 1387, 05:32 صبح
سلام
دوستان عزیز مرسی که جواب دادین مخصوصا reza6384 . مشکل حل شد .