Görünüm kümesi görünümünde bir ListView olan bir .NET 3.5 WinForm sahibim. Uzun bir arka plan görevinde kaydırılabilir bir durum öğeleri listesi olarak çalışır. En son eklenen ListViewItem (durum girişi) aşağıya eklendim. Görüldüğünden emin olmak için, ekledikten sonra yeni öğenin görünürlüğünü sağlarım. Her şey yolunda; Liste görünümü otomatik olarak en son öğeyi göstermek için aşağı doğru kaydırır.ListView kaydırma kontrolü - kullanıcı kaydırmıyorsa aşağıya kaydırın?
private void AddListItem(DateTime timestamp, string message, int index)
{
var listItem = new ListViewItem(timestamp.ToString());
listItem.SubItems.Add(message);
statusList.Items.Insert(index, listItem);
statusList.Items[statusList.Items.Count - 1].EnsureVisible();
}
, ListView o geliyor gibi yeni öğe görünür hale getirmek için aşağı kaydırıldığında edilecek kullanıcı eski iletiyi bakmak için yukarı kaydırma olup olmadığını sorun olduğunu. Denetlemek için bu davranışını denetlemek için bir yolu var mı Kullanıcı, kaydırma çubuğuyla (özellikle, kaydırma çubuğundaki fare düğmesini basılı tutuyorlarsa) etkileşiyor? Kaydırma her zaman altta ise, algılanması da muhtemelen kabul edilebilir. En altta değilse, en son öğenin görünürlüğünü garanti etmem. Bir şey gibi:
private void AddListItem(DateTime timestamp, string message, int index)
{
var listItem = new ListViewItem(timestamp.ToString());
listItem.SubItems.Add(message);
statusList.Items.Insert(index, listItem);
if (!statusList.IsScrollbarUserControlled)
{
statusList.Items[statusList.Items.Count - 1].EnsureVisible();
}
}
Garip olan kullanıcı yerine kaydırma "kolu" basılı tutarak zaman, sap (görünüm aslında programlama yoluyla aşağı kaydırılan varlık değildir ima) taşımak, ancak içinde olmamasıdır infact.
Güncelleştirme: Kaydırma çubuğunun konumunu algılamak mümkün mü, altta değil mi?
Bunun neden -1'den olduğuna emin değilim. Bu soruya cevap vermezken, çok makul bir alternatif sağladınız. –
@Stealth - bazı at ayakkabıları sistematik olarak yanıtlarımı düşürüyor. Hiçbir fikrim yok, bunun için endişelenme. Oy verdiğin için teşekkürler. –
Buradaki her iki cevap da doğru görünüyor, ama sonuç olarak öneriye katılıyorum çünkü kullanıcı ihtiyaçlarını daha fazla karşıladığını düşünüyorum ve bunun nasıl işleyeceğine daha az şaşırır. İşlemci İzleyicisi'ni önerdiğiniz gibi kullandım ve bir UX deneyimi için iyi çalışıyor. –