PDA

View Full Version : مشکل با ListView



emad_67
دوشنبه 29 مرداد 1386, 09:26 صبح
فرض کنید داخل listview یه سری آیتم داریم . من حالا می خوام که وقتی کاربری مثلا یه چیزی رو سزچ میکنه ، در صورت وجود داشتن در لیست اون سطر از لیست انتخاب بشه
حالا پارامتری مثل selectedIndex در listbox داریم که بشه باهاش گزینه ای رو در لیست انتخاب کنم؟

PC2st
دوشنبه 29 مرداد 1386, 09:41 صبح
یک همچنین چیزی باید باشه:


int index = listBox1.FindString("Item Text");
if (index != -1)
listBox1.SelectedIndex = index;

emad_67
دوشنبه 29 مرداد 1386, 09:46 صبح
با تشکر ولی شما این چیز هایی که گفتین برا listbox هست ولی من سوالم در مورد listview بود

PC2st
دوشنبه 29 مرداد 1386, 09:54 صبح
ببخشید، قاطی کردم :بامزه:



ListViewItem item = listView1.FindItemWithText("Item Text");

if (item != null)
{
// if you want to select it...
item.Selected = true;

// if you want to set it focus...
item.Focused = true;
}

emad_67
دوشنبه 29 مرداد 1386, 10:24 صبح
خیلی خیلی ممنون ولی یه مشکل دیگه پیش اومده که با اینکه مقدار item مورد نظر پیدا میشه و مقدار item.Selected برابر true هست ولی اون item انتخاب نمیشه

PC2st
دوشنبه 29 مرداد 1386, 11:47 صبح
خواهش میکنم، اگر میشه اون قسمت از کد را بگذارید.

pooyansystem
دوشنبه 29 مرداد 1386, 12:40 عصر
خیلی خیلی ممنون ولی یه مشکل دیگه پیش اومده که با اینکه مقدار item مورد نظر پیدا میشه و مقدار item.Selected برابر true هست ولی اون item انتخاب نمیشه
من هم همین مشکل را دارم
در ضمن یه سوال دیگه هم دارم اگه بخوام کلیه Item هایی که یه تکست خاص دارن رو در لیست که چند ستون دارد پیدا کنم باید چیکار کنم

emad_67
دوشنبه 29 مرداد 1386, 13:44 عصر
اینم کد:


privatevoid button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
ListViewItem list= new ListViewItem();
list.Text = i.ToString();
listView1.Items.Add(list);
}
ListViewItem item = listView1.FindItemWithText("3");
item.Focused = true;
item.Selected = true;

}

بعد از اینکه اعداد نشون داده شد وقتی رو خود listview کلیک میکنم تو یه لحظه از حالت انتخاب در میاد , مثل اینکه آیتم مورد نظر انتخاب میشه ولی نشون داده نمیشه و وقتی که کلیک میکنم deSelect شدن اونو نشون میده

PC2st
دوشنبه 29 مرداد 1386, 14:22 عصر
اگه بخوام کلیه Item هایی که یه تکست خاص دارن رو در لیست که چند ستون دارد پیدا کنم باید چیکار کنم
اگه میخواید کلیه Item هائی که مثلا Text اونها برابر "Item Text" باشه را پیدا کنید:


ListViewItem item;

for (int i = 0; i < listView1.Items.Count; i++)
{
item = listView1.FindItemWithText("Item Text", true, i);

if (item != null)
{
MessageBox.Show(item.Index.ToString());
i = item.Index;
}
else
break;
}

کد بالا، SubItem ها رو هم چک میکنه، مثلا اگر در سومین Column متن "Item Text" را پیدا کنه، با MessageBox ایندکس اون را نشون میده.

فکر کنم کدش واضح باشه، بهر حال اگر خواستید تا توضیحاتش رو بگم.

PC2st
دوشنبه 29 مرداد 1386, 14:30 عصر
بعد از اینکه اعداد نشون داده شد وقتی رو خود listview کلیک میکنم تو یه لحظه از حالت انتخاب در میاد
خط زیر رو به آخر کدها اضافه کنید:


listView1.Focus();

تا کنترل ListView فوکوس نداشته باشه، Itemهای انتخابی رو نمایش نمیدهد.
و در واقع با کلیکی که روی listView1 میکردید، باعث خارج کردن Item ها از انتخاب میشدید.

emad_67
دوشنبه 29 مرداد 1386, 23:49 عصر
یه سوال دیگه:
چه جوری میشه متوجه شد که کاربر آیتمی رو توی listview انتخاب کرده یا نه؟

hdv212
سه شنبه 30 مرداد 1386, 01:12 صبح
if (this.listView1.SelectedItems.Count > 0)
this.toolStripStatusLabel1.Text = "You Selected";
else
this.toolStripStatusLabel1.Text = "You Selected Nothing!";

PC2st
سه شنبه 30 مرداد 1386, 01:49 صبح
چه جوری میشه متوجه شد که کاربر آیتمی رو توی listview انتخاب کرده یا نه؟

از رویداد ItemSelectionChanged میشه متوجه شد. مثلا:


private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
MessageBox.Show(e.Item.Text + " is Selected.");
}

emad_67
پنج شنبه 01 شهریور 1386, 10:24 صبح
چه جوری میشه آیتم های listview رو sort کرد؟(مثلا بر اساس text اون ها)
از تابع sort خود listview هم که استفاهده میکنم اصلا هیچ فرقی نمیکنه . اگه میشه بگید چه جوری میشه sort کرد؟ از خود تابع sort در listview چه جوری میشه استفاهده کرد؟

PC2st
پنج شنبه 01 شهریور 1386, 12:09 عصر
قبلش باید خاصیت SortOrder رو تنظیم کنید:


listView1.Sorting = SortOrder.Ascending;
listView1.Sort();

emad_67
پنج شنبه 01 شهریور 1386, 12:53 عصر
خیلی ممنون دوست عزیز
میشه متد sort رو طوری تنظیم کرد که مرتب کردن رو بر اساس subitem ها هم انجام بده؟

PC2st
پنج شنبه 01 شهریور 1386, 15:21 عصر
باید یک شیئی که اینترفیس IComparer را پیاده سازی کرده برای خاصیت ListViewItemSorter مشخص کنید...

http://support.microsoft.com/kb/319401