ObjectListView разрешить вертикальную прокрутку, даже когда управление отключено?

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

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

Всего 1 ответ


Согласно: 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


Есть идеи?

10000