softsoft
12-11-10, 16:51
ما دوتا لیست ویو با نام های lvWallPapers و ListView_thumb داریم . و دو تا دکمه و یه openfiledialog با نام dialogWallPapers و یه imagelist با نام ImageList1 .حالا این کد ها رو در قسمت لود فرم قرار بدید :
Dim columnheader As ColumnHeader dialogWallPapers.Filter = "Picture Files |*.bmp;*.jpg;*.gif;*.png;*.tif" dialogWallPapers.Title = "اضافه کردن تصویر"Me.lvWallPapers.View = View.Details Me.lvWallPapers.FullRowSelect = True ' Create column headers for the data. columnheader = New ColumnHeader columnheader.Text = "کاغذ دیواری" columnheader.Width = 150 Me.lvWallPapers.Columns.Add(columnheader) columnheader = New ColumnHeader columnheader.Text = "حالت قرارگیری" columnheader.Width = 100 Me.lvWallPapers.Columns.Add(columnheader) columnheader = New ColumnHeader columnheader.Text = "مسیر" columnheader.Width = 400 Me.lvWallPapers.Columns.Add(columnheader) ' This last column is used to store the picture's wallpaper status. columnheader = New ColumnHeader columnheader.Text = "" columnheader.Width = 0 Me.lvWallPapers.Columns.Add(columnheader)کد دکمه ی اولی برای قرار گرفتن تعدادی آدرس عکس در lvWallPapers :
Dim lviewitem As ListViewItem dialogWallPapers.FileName = Nothing dialogWallPapers.ShowDialog() Dim file As String For Each file In dialogWallPapers.FileNames If dialogWallPapers.FileName Nothing Then Dim fi As New FileInfo(file) lviewitem = New ListViewItem(fi.Name) lviewitem.SubItems.Add("Stretched") lviewitem.SubItems.Add(file) lviewitem.SubItems.Add("False") Me.lvWallPapers.Items.Add(lviewitem) fi = Nothing SaveList() End If Next fileکد دکمه دوم برای ایجاد حالت thumb در ListView_thumb :
ListView_thumb.Items.Clear() For i As Integer = 0 To lvWallPapers.Items.Count - 1 ListView_thumb.Items.Add(lvWallPapers.Items(i).Tex t) ListView_thumb.Items(i).ImageIndex = i ListView_thumb.Items(i).ToolTipText = lvWallPapers.Items(i).SubItems(2).Text Try ImageList1.Images.Add(Image.FromFile(lvWallPapers. Items(i).SubItems(2).Text)) Catch End Try ListView_thumb.LargeImageList = ImageList1 Nextبا این کد میشه تصاویر درون لیت ویو اولی رو به صورت Thumb در لیست ویو دومی دید . روش خوبی ولی به شرطی که تعداد آیتم ها در لیست ویو اول کم باشه و اگه تعداد آیتم ها زیاد باشه باید خیلی صبر کرد . من میخوام وقتی روی دکمه ی دومی کلیک میکنم (دکمه ای که حالت thumb رو درست میکنه ) یه پنجره کوچیک باز بشه و توش یه پروگرس بار باشه که نشون بده چقدر دیگه مونده تا حالت thumb و لود عکس ها طول می کشه و یه دکمه که اگه حوصلمون سر رفت بطونیم عملیات رو Cancle کنیم و دیگه نمونیم . ممنون میشم اگه کمکم کنید .البته من این طور که فهمیدم میشه از Threadها استفاده کرد . اگه درست فهمیده باشم . اگه نه که خوب یه روش بهتر بگید .یه سوال دیگه هم دارم اونم اینه که نمیشه فاصله بین آیتم های ListView_thumb رو کم کرد تا در یه سطر تعداد بیشتری عکس دیده بشه ؟و اگه خاصیت checkbox لیست ویویی رو که عکس ها رو نشون میده رو برابر True قرار بدیم کنار هر عکس یه چک باکس قرار میگیره . چه جوری میشه کاری کرد که وقتی رو دکمه کلیک می کنیم اون خونه هایی که چک باکسشون تیک خورده حذف بشن . هم آیتم های لیست باکس اول و هم دوم . سوال دوم : ما 9 تا تکست باکس روی فرم داریم . و من میخوام وقتی عددی رو توی هر کدوم از تکست باکس ها درج می کنیم بتونیم چک کنیم که آیا این عدد در تکست باکس های دیگه هست یا نه . اگه بود رنگ اون دوتا یا اون تکست باکس هایی که عدد یکسان دارند قرمز بشه و در غیر این صورت رنگشون سفید .
Dim columnheader As ColumnHeader dialogWallPapers.Filter = "Picture Files |*.bmp;*.jpg;*.gif;*.png;*.tif" dialogWallPapers.Title = "اضافه کردن تصویر"Me.lvWallPapers.View = View.Details Me.lvWallPapers.FullRowSelect = True ' Create column headers for the data. columnheader = New ColumnHeader columnheader.Text = "کاغذ دیواری" columnheader.Width = 150 Me.lvWallPapers.Columns.Add(columnheader) columnheader = New ColumnHeader columnheader.Text = "حالت قرارگیری" columnheader.Width = 100 Me.lvWallPapers.Columns.Add(columnheader) columnheader = New ColumnHeader columnheader.Text = "مسیر" columnheader.Width = 400 Me.lvWallPapers.Columns.Add(columnheader) ' This last column is used to store the picture's wallpaper status. columnheader = New ColumnHeader columnheader.Text = "" columnheader.Width = 0 Me.lvWallPapers.Columns.Add(columnheader)کد دکمه ی اولی برای قرار گرفتن تعدادی آدرس عکس در lvWallPapers :
Dim lviewitem As ListViewItem dialogWallPapers.FileName = Nothing dialogWallPapers.ShowDialog() Dim file As String For Each file In dialogWallPapers.FileNames If dialogWallPapers.FileName Nothing Then Dim fi As New FileInfo(file) lviewitem = New ListViewItem(fi.Name) lviewitem.SubItems.Add("Stretched") lviewitem.SubItems.Add(file) lviewitem.SubItems.Add("False") Me.lvWallPapers.Items.Add(lviewitem) fi = Nothing SaveList() End If Next fileکد دکمه دوم برای ایجاد حالت thumb در ListView_thumb :
ListView_thumb.Items.Clear() For i As Integer = 0 To lvWallPapers.Items.Count - 1 ListView_thumb.Items.Add(lvWallPapers.Items(i).Tex t) ListView_thumb.Items(i).ImageIndex = i ListView_thumb.Items(i).ToolTipText = lvWallPapers.Items(i).SubItems(2).Text Try ImageList1.Images.Add(Image.FromFile(lvWallPapers. Items(i).SubItems(2).Text)) Catch End Try ListView_thumb.LargeImageList = ImageList1 Nextبا این کد میشه تصاویر درون لیت ویو اولی رو به صورت Thumb در لیست ویو دومی دید . روش خوبی ولی به شرطی که تعداد آیتم ها در لیست ویو اول کم باشه و اگه تعداد آیتم ها زیاد باشه باید خیلی صبر کرد . من میخوام وقتی روی دکمه ی دومی کلیک میکنم (دکمه ای که حالت thumb رو درست میکنه ) یه پنجره کوچیک باز بشه و توش یه پروگرس بار باشه که نشون بده چقدر دیگه مونده تا حالت thumb و لود عکس ها طول می کشه و یه دکمه که اگه حوصلمون سر رفت بطونیم عملیات رو Cancle کنیم و دیگه نمونیم . ممنون میشم اگه کمکم کنید .البته من این طور که فهمیدم میشه از Threadها استفاده کرد . اگه درست فهمیده باشم . اگه نه که خوب یه روش بهتر بگید .یه سوال دیگه هم دارم اونم اینه که نمیشه فاصله بین آیتم های ListView_thumb رو کم کرد تا در یه سطر تعداد بیشتری عکس دیده بشه ؟و اگه خاصیت checkbox لیست ویویی رو که عکس ها رو نشون میده رو برابر True قرار بدیم کنار هر عکس یه چک باکس قرار میگیره . چه جوری میشه کاری کرد که وقتی رو دکمه کلیک می کنیم اون خونه هایی که چک باکسشون تیک خورده حذف بشن . هم آیتم های لیست باکس اول و هم دوم . سوال دوم : ما 9 تا تکست باکس روی فرم داریم . و من میخوام وقتی عددی رو توی هر کدوم از تکست باکس ها درج می کنیم بتونیم چک کنیم که آیا این عدد در تکست باکس های دیگه هست یا نه . اگه بود رنگ اون دوتا یا اون تکست باکس هایی که عدد یکسان دارند قرمز بشه و در غیر این صورت رنگشون سفید .