PDA

View Full Version : سوال: عدم آپدیت شدن ListView در هنگام کلیک کردن بر روی داده های جدید درون آن



Ship Storm
دوشنبه 06 خرداد 1392, 20:57 عصر
سلام بر اساتید بزرگوار
من یک قسمت از برنامه خودم رو برای تعریف کاربر جدید در نظر گرفتم که توش مشخصات کاربر وارد میشه و روی دکمه 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



این هم عکسی از ظاهر فرم من وقتی یک یوزر جدید میسازم و روش کلیک میکنم که عکسش تو Picturebox سمت راست نمایش داده بشه ولی نمایش داده نمیشه :
http://upload.tehran98.com/img1/zjs1n5jtarabyqq9wyr.jpg

این هم عکسی از ظاهر فرم من وقتی روی یوزری که قبلا ایجاد شده کلیک میکنم که عکسش تو Picturebox سمت راست نمایش داده میشه و مشکلی نداره :

http://upload.tehran98.com/img1/iknr3wmpfdf9jdtvi3.jpg

حالا که روی این یوزری که قبلا ایجاد شده کلیک کردم و وقتی مجدد روی این یوزر جدید که ایجاد شده کلیک میکنم عکس رو نمایش میده ، ملاحظه کنید :

http://upload.tehran98.com/img1/ba97ijultc5wcp29kn.jpg