PDA

View Full Version : سوال: جستجو در treeview



ma.andishe
شنبه 12 دی 1388, 14:06 عصر
سلام. کسی روش جستجو در treeview اگه بلده 1 توضیح با نمونه کد ممنون میشم

gigidagostino
شنبه 12 دی 1388, 17:38 عصر
سلام. کسی روش جستجو در treeview اگه بلده 1 توضیح با نمونه کد ممنون میشم
سلام
ببین باید یه تابع بازگشتی بنویسی.
این دوتا تابع کار نمایش همه ند هارو برات انجام میدن که اینم بازگشتیه.


Private Sub PrintRecursive(ByVal n As TreeNode)
System.Diagnostics.Debug.WriteLine(n.Text)
MessageBox.Show(n.Text)
Dim aNode As TreeNode
For Each aNode In n.Nodes
PrintRecursive(aNode)
Next
End Sub

' Call the procedure using the top nodes of the treeview.
Private Sub CallRecursive(ByVal aTreeView As TreeView)
Dim n As TreeNode
For Each n In aTreeView.Nodes
PrintRecursive(n)
Next
End Sub


شما
CallRecursive رو که برای Treeview اجرا کنی اسم تمام گره هارو بهت میده.جستجوشم مینویسم

gigidagostino
شنبه 12 دی 1388, 17:49 عصر
این تغییرم بدی (با فرض اینکه مورد جستجو توی Textbox1 نوشته شده باشه)برات معین میکنه که توی گره هات چنین چیزی هست یا نه(برای هر گره Text رو چک میکنه)


Private Sub PrintRecursive(ByVal n As TreeNode)
System.Diagnostics.Debug.WriteLine(n.Text)
If TextBox1.Text = n.Text Then
("گره مورد نظر وجود دارد") MessageBox.Show
End If
Dim aNode As TreeNode
For Each aNode In n.Nodes
PrintRecursive(aNode)
Next
End Sub

فقط یادتون نره یک بار ( CallRecursive(TreeView1 رو باید صدا بزنید(مثلا با زدن دکمه جستجو)
فرمتون باید این شکلی باشه

ma.andishe
دوشنبه 14 دی 1388, 07:16 صبح
خیلی ممنون اما اگه میشه 1 توضیح بیشتری در مورد 2 تابع برگشتی بدی ممنون میشم

gigidagostino
دوشنبه 14 دی 1388, 13:17 عصر
سلام
امیدوارم کارتو انجام شده باشه
راستش یه کم شلوغ شد.الان دوباره خوندمش،فقط به تابع PrintRecursive احتیاجه(وفقط این تابع بازگشتیه).به اون یکی نیازی نیست.
با همون فرض که کدهات با زدن یک دکمه اجرا میشن این کد ساده تره:(حداقل به نظر من ساده تره)





Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim TN As TreeNode
For Each TN In TreeView1.Nodes
PrintRecursive(TN)
Next
End Sub

Private Sub PrintRecursive(ByVal n As TreeNode)
If TextBox1.Text = n.Text Then
("گره مورد نظر وجود دارد") MessageBox.Show
Dim aNode As TreeNode
For Each aNode In n.Nodes
PrintRecursive(aNode)
Next
End Sub



با حلقه For Each برای تک تک گره های ریشه درخت PrintRecursive صدا زده میشه،تو این تابع برای هر گره ای که صدا زده شده ،PrintRecursive برای تمام فرزنداش صدا زده میشه(چون خودش خودش رو صدا زده میشه بازگشتی).من همینارو راجع بهش میدونم اگر جواب سوالتون نبود سوالتون رو دقیقتر بپرسید.

ma.andishe
دوشنبه 14 دی 1388, 14:51 عصر
خیلی ممنون