PDA

View Full Version : انتقال اطلاعات بین فرمها



hamidafs
جمعه 24 فروردین 1386, 15:29 عصر
با سلام به همه دوستان
در فرم1 من که اطلاعات را از کاربر می گیره و در یک قسمت یک باتون و یک تکس باکس دارم که وقتی روی باتون کلیک شد فرم 2باز شده و در اون فرم هم یک دیتاگرید دارم که اگر روی دیتاگرید کلیک شد یکی از فیلدهای عددی جدول در فرم 1برگردونده بشه(انتقال اطلاعات بین فرم ها) و البته اینکه اطلاعات قبلی که کاربر وارد کرده هم از بین نره.
مشکل اول من:
در فرم 2 موقعی که روی دیتاگرید کلیک می کنم و آیتمی رو انتخاب می کنم اطلاعات رو نمی دونم چه طوری به فرم 1 انتقال بدم .
مشکل دومم که البته سرچ کردم ولی مطلبی رو پیدا نکردم که مشکل منو حل کنه.
در فرم 1من اگر دستور ات زیر رو بنویسم و فرم 2 رو انتخاب کنم :
Dim ss As New Form2
ss.MdiParent = Me
ss.Show()
و در فرم 2 باتونی دارم که اگر روی اون کلیک کرد فرم 3 باز بشه. می خواستم ببینم می شه فرم2و فرم3 رو در فرم1 باز کرد.و اینکه این کاردرستیه.
بسیار مچکر از راهنمایی تون-موفق باشید
و سورس هر دو مشکلم رو می ذارم:

maryam_80
جمعه 24 فروردین 1386, 17:29 عصر
برای ذخیره اطلاعات از روی دیتا گرید به فرم دیگر می توانید یک آرایه از نوع public تعریف کنید و فیلدهای مورد نظر خود را از گرید به آن add کنید و در فرم دیگر اطلاعات را از روی آرایه read کنید و در جای مورد نظر قرار دهید

مهدی نان شکری
جمعه 24 فروردین 1386, 17:58 عصر
http://www.devcity.net/Articles/100/1/.aspx

art2000ir
شنبه 25 فروردین 1386, 07:08 صبح
میتونید اطلاعات رو در یک جدول temp ذخیره کنید و بعد بازخوانی کنید و بعد از باز خوانی انرا از جدول پاک کنید البته این روش منطقی نیست اما بعضی وقت ها به کار میاد

zarrin_306
یک شنبه 26 فروردین 1386, 14:04 عصر
می تونید اون کد رو در جدول بگیری و تما مشخصات رو به فرم برگردونی
در مورد سوال دوم هم بله میشود

ascpro
یک شنبه 26 فروردین 1386, 22:27 عصر
این کدی اگر بنویسی روی هر فیلدی که کلیک کنی بهت اطلاعاتشو میدی.
من منظورتونو کامل نفهمیدم اما اگر منظورتون اینه که اینم کدش:


Private Sub myDataGrid_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles myDataGrid.CurrentCellChanged
MessageBox.Show("Col is " & myDataGrid.CurrentCell.ColumnNumber _
& ", Row is " & myDataGrid.CurrentCell.RowNumber _
& ", Value is " & myDataGrid.Item(myDataGrid.CurrentCell))
End Sub

به جای mydatagrid باید نام datagrid خودتو بزاری.
بازم اگر مشکلی بود در خدمتم.

urmiainfo
جمعه 13 مهر 1386, 18:29 عصر
می تونی یک یا چند تا متغیر در سطح Public در سطح فرم تعریف کنی
سپس زمان فراخوانی فرم اونها رو مقدار دهی کنی

مثال:

form
Dim userkind as integer

فراخوانی
Dim a1 as new form name
a1.userkind=10
a1.show

ehsan_zanganeh
شنبه 14 مهر 1386, 09:59 صبح
با سلام

می تونی از نوع تعریف Public Shared برای متغییرهات استفاده کن . حتی برای datagrid .
بعد میتونی در هر فرم دیگه به محتویات این متغییر دسترسی داشته باشی.

saeed_rezaei
شنبه 14 مهر 1386, 10:29 صبح
سلام.
استفاده از روش انتقال اطلاعات بین فرمها به صورت متغیرهای سراسری روش معمول و سنتی هست اما ایراداتی هم بهش وارد هست. هر وقتی شما متغیر سراسری تعریف می کنید، فرم یا کلاسی که متغیر توی اون تعریف شده، به راحتی نمی تونه روی مقدار متغیر کنترل داشته باشه. هر کلاس فراخواننده ای می تونه هر مقداری رو بهش نسبت بده و صحت اطلاعات به سختی بررسی می شه.
از طرفی گاهی اوقات شما می خواید به محض برگردوندن اطلاعات یه عملیات هم انجام بشه. در حالت استفاده از متغیر سراسری، کلاس مادر متوجه تغییر این مقدار نمی شه مگه اینکه یه متد اجرا بشه.

پیشنهاد من استفاده از property هست.
همانطور که همه می دونند، وقتی یه کلاس می نویسیم، برای رد و بدل و ونظارت بر اطلاعات، property واسش تعریف می کنیم.
1- با استفاده از property هم می شه اطلاعات را رد و بدل کرد
2- بر روی مقدار وارده کنترل داشت. حتما تا حالا دیدید که هنگامی که نام یه کنترل رو عوض می کنید اگه غیر استاندارد باشه بهتون اجازه نمی ده اطلاعات رو وارد کنید.
3- از طرفی می تونید به محض ورود اطلاعات شاهد انجام عملیات باشید. مثل خصوصیت widht که به محض تغییر، پهنای کنترل نیز تغییر می کنه بدون اینکه شما متدی رو اجرا کنید.