وينفورمز:كيف يمكنني عرض العنصر الأخير برمجياً في عرض قائمة C# عندما تكون هناك أشرطة تمرير رأسية؟
سؤال
كيف يمكنني عرض العنصر الأخير برمجياً في عرض قائمة C# عندما تكون هناك أشرطة تمرير رأسية؟لقد درست كل الطرق المرتبطة بطرق عرض القائمة ولم أجد أي شيء.
المحلول
وليس من السهل في الواقع / ممكن للتمرير وجهة النظر القائمة. عليك أن تقول هذا البند للتأكد من انها مرئية.
var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();
نصائح أخرى
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();
وListViewItem.EnsureVisible ()
وينفورمز:
هل حاولت تعيين القيمة المحددة على TRUE في العنصر الأخير في مجموعة العناصر في ListView؟
أعتقد أن القيام بذلك سيركز على العنصر الأخير ...التمرير لأسفل إذا كان ذلك ضروريا.لكنني لم أحاول بنفسي.
يحرر:هذا وسوف تفعل خدعة:
Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()
وWPF أو WinForms عناصر؟
في WPF، يمكنك الحصول على ListViewItem
وندعو BringIntoView
على ذلك.
وهذا هو رابط لاستخدام وظيفة النوافذ لإخفاء الأفقي والرأسي القوة ليتم عرضها في جميع الأوقات:
HTTP: //social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/
والإختراق التالية على حد سواء اختيار وعرض آخر عنصر ListView.
لا يدري لماذا يعمل هذا ولكنه يعمل.
listview.SelectedIndices.Clear();
listview.FocusedItem = listview.Items[listview.Items.Count - 1];
listview.FocusedItem.Selected = true;
listview.BeginInvoke((MethodInvoker)delegate {
listview.FocusedItem.EnsureVisible();
});
وأيضا، إذا كنت لا ترغب في شريط التمرير الأفقي لإظهار، تحتاج إلى تغيير حجم الأعمدة ListView إلى تناسب العرض ClientArea
يكون ListView قبل الدعوة BeginInvoke
.