وينفورمز:كيف يمكنني عرض العنصر الأخير برمجياً في عرض قائمة C# عندما تكون هناك أشرطة تمرير رأسية؟

StackOverflow https://stackoverflow.com/questions/616491

سؤال

كيف يمكنني عرض العنصر الأخير برمجياً في عرض قائمة 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top