عدم آپدیت شدن ListView در هنگام کلیک کردن بر روی داده های جدید درون آن
سلام بر اساتید بزرگوار
من یک قسمت از برنامه خودم رو برای تعریف کاربر جدید در نظر گرفتم که توش مشخصات کاربر وارد میشه و روی دکمه Creat User زده میشه و کاربر جدید ساخته میشه و مشخصات اون سریعا روی ListView همون فرم نمایش داده میشه ولی مشکل اینجاست که وقتی کاربر جدید ایجاد شد وقتی میرم رو ListView و روی مشخصاتش کلیک میکنم تو PictureBox ای که رو صفحه طراحی کردم عکسش ظاهر نمیشه و باید حتما قبلش روی یوزرهای قدیمی که ایجاد شده و تو ListView موجود هست کلیک کنم و بعد بیام روی این یوزر جدیدی که ساختم کلیک کنم تا عکس انتخابی و ذخیره شده تو Database من رو نشون بده
علت چیه ؟ چرا همون دفعه اول که روی یوزر ایجاد شده تو listView کلیک میکنم عکسش کاربر رو نمایش نمیده تو Picturebox و حتما باید قبلش روی یوزرهای قبلی کلیک کنم و بعد مجدد روی این یوزر جدیده کلیک کنم تا عکس رو نمایش بده ؟
این کدی هست که تو ListViewو تو خاصیت ItemSelectionChanged نوشتم :
Private Sub ListView1_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedE ventArgs) Handles ListView1.ItemSelectionChanged
TextBox8.Text = e.Item.SubItems(1).Text
TextBox7.Text = e.Item.SubItems(2).Text
If e.Item.SubItems(3).Text = "Male" Then
RadioButton4.Checked = True
Else
RadioButton3.Checked = True
End If
ComboBox2.Text = e.Item.SubItems(4).Text
PictureBox2.ImageLocation = (Environment.CurrentDirectory & "\CustomerPictures\") + e.Item.SubItems(5).Text + ".jpg"
pics = (PictureBox2.ImageLocation)
TextBox6.Text = e.Item.SubItems(6).Text
TextBox5.Text = e.Item.SubItems(7).Text
Label12.Text = e.Item.SubItems(0).Text
End Sub
این هم کدی هست که تو دکمه Creat User نوشتم :
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
On Error Resume Next
Dim con As New SqlConnection()
con.ConnectionString = "Data Source=.\SQLExpress;AttachDbFilename=|DataDirector y|\Automation.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;"
con.Open()
Dim com As New SqlCommand()
com.Connection = con
Dim sql As String
Dim rnd As New Random
Dim temp As String
temp = rnd.Next(100000, 999999).ToString()
File.Copy(ImgPath, Environment.CurrentDirectory & "\CustomerPictures\" & temp & ".JPG")
Dim stream As New FileStream(Environment.CurrentDirectory & "\CustomerPictures\" & temp & ".JPG", FileMode.Open)
'File.Copy(ImgPath, ("H:\Automation Project\Automation\Automation\UserPictures") & "\" & temp & ".JPG")
'Dim stream As New FileStream(("H:\Automation Project\Automation\Automation\UserPictures") & "\" & temp & ".JPG", FileMode.Open)
Dim reader As New BinaryReader(stream)
Dim imgByte() As Byte
imgByte = reader.ReadBytes(stream.Length)
Dim s As String
If (RadioButton1.Checked = True) Then
s = 0
ElseIf (RadioButton2.Checked = True) Then
s = 1
End If
If s = 0 Then
s = "Male"
Else
s = "Female"
End If
Dim b As String
b = ComboBox1.SelectedItem
sql = "INSERT INTO Login(UserName,Password,Gender,BirthYear,picture,P hone,Email) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}')"
sql = String.Format(sql, TextBox1.Text, TextBox2.Text, s, b, temp, TextBox3.Text, TextBox4.Text)
com.CommandText = sql
com.ExecuteNonQuery()
MsgBox("User Created Successfully")
con.Close()
ListView1.Items.Clear()
Dim Lst As ListViewItem
PubSqlCon.ConnectionString = PubStrConString
PubSqlCom.CommandText = "SELECT * FROM Login "
PubSqlCom.Connection = PubSqlCon
If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open()
PubSqlDR = PubSqlCom.ExecuteReader()
If PubSqlDR.HasRows Then
While PubSqlDR.Read()
Lst = ListView1.Items.Add(PubSqlDR("ID"))
Lst.SubItems.Add(1).Text = (PubSqlDR("UserName"))
Lst.SubItems.Add(2).Text = (PubSqlDR("Password"))
Lst.SubItems.Add(3).Text = (PubSqlDR("Gender"))
Lst.SubItems.Add(4).Text = (PubSqlDR("BirthYear"))
Lst.SubItems.Add(5).Text = (PubSqlDR("Picture"))
Lst.SubItems.Add(6).Text = (PubSqlDR("Phone"))
Lst.SubItems.Add(7).Text = (PubSqlDR("Email"))
End While
End If
If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
RadioButton1.Checked = False
RadioButton2.Checked = False
PictureBox1.Image = My.Resources.Pictures_Canon_icon
ComboBox1.SelectedIndex = -1
ListView1.Update()
End Sub