ObjectListView разрешить вертикальную прокрутку, даже когда управление отключено? - PullRequest
0 голосов
/ 24 марта 2020

В ObjectListView (или одном из его вариантов, таких как DataListView) есть способ разрешить вертикальную прокрутку, даже когда элемент управления отключен?

В настоящее время отключение элемента управления не позволяет вертикальной полосе прокрутки реагировать на действия мыши.

1 Ответ

0 голосов
/ 24 марта 2020

Согласно: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.enabled?view=netframework-4.8

Control.Enabled Свойство

Получает или задает значение, указывающее, может ли элемент управления реагировать на взаимодействие с пользователем.

Итак, отключив элемент управления, вы удаляете все взаимодействия с пользователем, включая прокрутку. Поскольку это наследуется всеми элементами управления, ObjectListView работает одинаково.

То есть вы не хотите отключать элемент управления.

Не совсем точно, чего вы хотите достичь, но У ObjectListView есть способ отключить некоторые (или все) установленные вами Объекты.

Пример: Допустим, у вас есть простой класс телефонных номеров, который также включает метод IsValid.

 public class TelephoneNumber
 {
      public string Number { get; set; }
      public string Owner { get; set; }
      public string City { get; set; }

      public bool IsValid()
      {
          //code to check if number is valid
          if (this.Number.Length > 5)
              return true;
          else
              return false;
      }
 }

Вы заполняете список и устанавливаете список объектов ObjectListView как обычно.

List<TelephoneNumber> MyNumbers = new List<TelephoneNumber>();
MyNumbers.Add(new TelephoneNumber() { Number = "9512636272", City = "London", Owner = "Bob's Grill" });
MyNumbers.Add(new TelephoneNumber() { Number = "9518263729", City = "Frankfurt am Main", Owner = "Tagesschau" });
MyNumbers.Add(new TelephoneNumber() { Number = "951", City = "Wiesbaden",  Owner = "John"});

this.objectListView1.SetObjects(MyNumbers);

Затем, чтобы отключить некоторые из этих объектов, вы генерируете новый подсписок и используете их как отключено.

//Generate new list of Incorrect numbers
List<TelephoneNumber> Incorrect = MyNumbers.FindAll(delegate (TelephoneNumber number) { return !number.IsValid(); });
//Set these to be Disabled
this.objectListView1.DisabledObjects = Incorrect;

Существуют методы для отключения и включения одного или нескольких объектов или всего списка объектов.

Подробнее см. в документации. Прокрутите вниз, чтобы узнать, как это сделать. http://objectlistview.sourceforge.net/cs/blog8.html

...