【发布时间】:2020-03-24 14:11:28
【问题描述】:
在 ObjectListView(或其变体之一,如 DataListView)中,是否有一种方法可以在禁用控件时允许垂直滚动?
目前,禁用控件会阻止垂直滚动条响应鼠标活动。
【问题讨论】:
标签: c# winforms scrollbar objectlistview
在 ObjectListView(或其变体之一,如 DataListView)中,是否有一种方法可以在禁用控件时允许垂直滚动?
目前,禁用控件会阻止垂直滚动条响应鼠标活动。
【问题讨论】:
标签: c# winforms scrollbar objectlistview
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
【讨论】: