PDA

View Full Version : انتقال اطلاعات



mohandesan
پنج شنبه 01 شهریور 1386, 08:25 صبح
با سلام
آیا در vb.net این امکان هست که یک کامپوننت با همه اطلاعاتش به یک فرم دیگر منتقل شود؟
مثلا من در فرم 1 یک treeview دارم می خواهم این treeview را با همه نودهایش به فرم 2 انتقال دهم
تو رو خدا کمک کنید فوریه
:گریه:

ghafoori
پنج شنبه 01 شهریور 1386, 09:25 صبح
دوست عزیز اگر منظور شما در زمان اجرای برنامه است شما کافی است در فرم 2 بک متغییر از نوع treeview و بصورت public تعریف کنید و از فرم 1 که فرم2 را فرا می خوانید متغییر را هم مقدار بدید

mohandesan
پنج شنبه 01 شهریور 1386, 10:02 صبح
من این کار را کردم و لی نشد می شه بگین چه طور مقدار دهی کنم من این مراحل را انجام دادم ولی نشد
در فرم 2 این را نوشتم Public tr As TreeView
سپس در فرم 1
Form2.tr = TreeView1
Form2.Show()
برای مقداردهی به این صورت عمل کردم در فرم 2
TreeView1 = tr

twelve
پنج شنبه 01 شهریور 1386, 21:47 عصر
بالای code behind بعد از خط زیر
PublicClass Form2
Inherits System.Windows.Forms.Form

یک شی اشتراکی tree view واسه فرم دومت تعریف کن ببین کارت میشه؟





public shared tr as form1

mohandesan
شنبه 03 شهریور 1386, 07:14 صبح
با سلام
جناب twelveاین کدی که دادین جواب نداد
جناب غفوری می شه بیشتر کدتون رو توضیح بدین ما هر کاری کردیم آخرش توی فرم 2 treeview فرم 1 را نشون نداد
با تشکر

ghafoori
شنبه 03 شهریور 1386, 13:24 عصر
ببخشید دوست عزیز که دیر شد راههای بالا تمام جواب نمی دهند بخاطر اینکه تمام متغییر ها داخل vb.net با رفرنس پاس می شوند نتوانستم راه حل قبلی من جواب نمی دهد ولی از این کد استفاده کن حتما جواب می دهد
داخل فرم 1 این کد را قرار بده

Dim f As New Form2
f.nodes = New TreeNode(Me.TreeView1.Nodes.Count - 1) {}
Dim a As Integer
For a = 0 To Me.TreeView1.Nodes.Count - 1
f.nodes(a) = Me.TreeView1.Nodes(a).Clone
Next
f.Show()

و داخل فرم 2

Public nodes As TreeNode()
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.TreeView1.Nodes.AddRange(nodes)

End Sub

حالا مشکل حل می شود این هم کل پروژه
10508

mohandesan
شنبه 03 شهریور 1386, 15:36 عصر
با تشکر فراوان از شما دوست عزیز
من این کار را کردم کاملا درست شد ولی یک مشکل وجود دارد دیگر آیکن نودهای tree را نشان نمی دهد

ghafoori
شنبه 03 شهریور 1386, 16:17 عصر
کد خودتان را بصورت زیر اصلاح کنید
فرم 1


Dim f As New Form2
f.nodes = New TreeNode(Me.TreeView1.Nodes.Count - 1) {}
Dim a As Integer
For a = 0 To Me.TreeView1.Nodes.Count - 1
f.nodes(a) = Me.TreeView1.Nodes(a).Clone
Next
f.imagelist = Me.ImageList1
f.Show()

فرم2

Public nodes As TreeNode()
Public imagelist As ImageList
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.TreeView1.ImageList = Me.imagelist
Me.TreeView1.Nodes.AddRange(nodes)

End Sub