عن الاداء TreeView1 - alims - 11-11-21
السلام عليكم عندى TreeView1 فيها مشكلة وهى عندها عرض اسماء الدول وعصمتها بيتم تكرار اسم العاصمها و دى اول مشكلة
[attachment=27199]
تانى حاجة عندى ملف جوه صورة باسم كل دولة اريد ان يتم اظهار صورة بجانب اسم الدولة وفقط
وهذا هو الكود المستخدام
كود :
Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Soka\documents\visual studio 2010\Projects\Spicy Messenger !\Spicy Messenger !\ArEnLang.accdb;Persist Security Info=True")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If cn.State = ConnectionState.Open Then cn.Close()
cn.Open()
Dim StrSQL As String = "Select * From countriesnames ORDER BY countriesnamesAR"
Dim daa As New OleDb.OleDbDataAdapter(StrSQL, cn)
Dim GetTable As New DataTable
GetTable = ExcSqlDT(StrSQL)
daa.Fill(GetTable)
TreeView1.Nodes.Clear()
Dim dict As New Dictionary(Of String, List(Of String))()
For Each row As Data.DataRow In GetTable.Rows
Dim ParentRow As String = DirectCast(row.Item(1), String)
Dim ChildRow As String = DirectCast(row.Item(5), String)
If ParentRow Is Nothing OrElse ChildRow Is Nothing Then
Continue For
End If
If dict.ContainsKey(ParentRow) Then
dict(ParentRow).Add(ChildRow)
Else
dict.Add(ParentRow, New List(Of String)())
dict(ParentRow).Add(ChildRow)
End If
Next
Dim node As TreeNode
For Each kvp In dict
node = New TreeNode(kvp.Key)
TreeView1.Nodes.Add(node)
For Each chiled As String In kvp.Value
node.Nodes.Add(chiled)
Next
Next
cn.Close()
End Sub
Function ExcSqlDT(ByVal SqlStr As String) As DataTable
Dim da As New OleDb.OleDbDataAdapter(SqlStr, cn)
Dim dtt As New DataTable
dtt.Clear()
da.Fill(dtt)
Return dtt
End Function
End Class
تم حل المشكلة عن طريق حذف
كود :
dict(ParentRow).Add(ChildRow)
هل انا صح ام خطاء
سؤال اخر و هو اظهار صورة بجانب اسم كل دولة
للعلم يوجد فلولدر كامل يحتوى على صورة كل دولة باسمها كيفية اضافة هذا
RE: عن الاداء TreeView1 - Anas Mahmoud - 11-11-21
تفضل اخي الكريم
كود :
Dim cn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ArEnLang.accdb;Persist Security Info=True"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim StrSQL As String = "Select Id, CountriesNamesAR, FlagSmall, CapitalAr From countriesnames ORDER BY countriesnamesAR"
Dim dt As DataTable = GetDataTable(StrSQL)
TreeView1.Nodes.Clear()
For Each r As DataRow In dt.Rows
Dim I As New TreeNode()
I.Text = r("CountriesNamesAR")
I.ImageKey = r("Id")
ImageList1.Images.Add(r("Id"), ImgFromByte(r("FlagSmall")))
I.Nodes.Add(New TreeNode(TryCast(r("CapitalAr"), String)))
TreeView1.Nodes.Add(I)
Next
End Sub
Function ImgFromByte(img As Byte()) As Bitmap
Using ms As New MemoryStream(img)
Return New Bitmap(ms)
End Using
End Function
Function GetDataTable(query As String) As DataTable
Dim dt As New DataTable
Using conn As New OleDbConnection(cn)
Using cmd As New OleDbCommand(query, conn)
Using da As New OleDbDataAdapter(cmd)
da.Fill(dt)
End Using
End Using
End Using
Return dt
End Function
RE: عن الاداء TreeView1 - alims - 28-11-21
شكرا ليك اخى العزيز
عندى سؤال استخدام هذا الكود و هو يعم بنجاح ولكن فى حالة التحديث كل دقيقة يتم عمل يحدث للاداء بطريق اخفاء العناصر و اظهارها مره اخرى
اريد اقفها بمعنى ايدر ان يتم تحديث الاداء و ضافة الجديد و حذف القديم ولكن بدون رفريش الاداء ؟
ودى صوره كل ما حاول اعمل تحديد لاى عناصر بيتم الغاء التحديد
اريد ان يتم التحديث اضافة الجديد و مسح البيانات القديمة بندو هذى المشكلة
[attachment=27342]
كود :
Private Sub BackgroundWorker2_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker2.DoWork
Dim con As New System.Data.SqlClient.SqlConnection("Data Source=DESKTOP-SNS2QF4;Initial Catalog=SpicyMessenger;Integrated Security=True")
If con.State = ConnectionState.Open Then con.Close()
con.Open()
Dim cmd As New SqlCommand("SELECT publicroom.id,publicroom.nameroom,useraddnew.id,useraddnew.surnameandname,useraddnew.img FROM publicroom INNER JOIN useraddnew ON useraddnew.id = publicroom.id WHERE publicroom.nameroom =('" & Me.Label1.Text.ToString & "')", con)
Dim da As SqlDataReader = cmd.ExecuteReader
Me.ListView1.Items.Clear()
Form1.ListView1.Columns.Add("surnameandname")
Form1.ListView1.GridLines = True
Do While da.Read = True
Dim friendid As Integer = da("id")
Dim friendimg As Byte() = da("img")
Dim namefriend As String = da("surnameandname")
ImageList1.Images.Add(friendid.ToString, ImgFromByte(friendimg))
Dim i As New ListViewItem(namefriend, friendid.ToString)
ImageList1.Images.Add(friendid.ToString, ImgFromByte(friendimg))
i.SubItems.Add(friendid)
ListView1.Items.Add(i)
Loop
If con.State = ConnectionState.Open Then con.Close()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
BackgroundWorker2.RunWorkerAsync()
End Sub
RE: عن الاداء TreeView1 - alims - 28-11-21
يارب......
|