【发布时间】:2016-10-30 22:20:37
【问题描述】:
如果我创建一个类并使其从这样的 ListView 派生...
class MyListView : ListView
{
public MyListView() : base()
{
DoubleBuffered = true;
OwnerDraw = true;
Cursor = Cursors.Hand;
Scrollable = false;
}
protected override void OnDrawItem(DrawListViewItemEventArgs e)
{
//base.OnDrawItem(e);
}
}
然后我打开我的 windows 窗体的设计视图并添加一个新的 MyListView 对象,然后添加一个项目并将其链接到图像列表。我可以看到 mylistview 对象中有一项。它对我在名为lv、类型为MyListView 的表单上的对象没有影响。另一方面,当我运行我的应用程序时,我看到的正是我所期望的,并且没有列出任何项目。
为什么这会影响运行时而不是设计时绘制?
【问题讨论】:
-
嗯...好吧,我将代码粘贴到一个新的类文件中,然后打开我的表单并单击工具箱并将其拖到表单上。我选择表单上的新对象并将
LargeImageList更改为我的图像列表并编辑项目以包含一个带有图像列表中图像的项目,它使用LargeIcon的默认View。它在设计时显示该项目很好,但运行它并没有显示任何内容......你如何让它工作对我来说是惊人的。 -
不设置 View 属性是一个很大的错误,在自定义绘图时很重要。现在你只是看到它绘制标签,这不是自定义绘制的。猜测:不要使用 Load 事件来更改属性,那是 gauche。
-
我也用这段代码测试过:
this.View = System.Windows.Forms.View.Details; this.OwnerDraw = true; this.Columns.Add("X"); this.Items.Add("1"); this.Items.Add("2");但没有任何改变。 -
@HansPassant 我不明白你的逻辑。您的印象是我在
Load事件中做某事,而我的印象是我没有。在我拥有的代码中,我只有构造函数的代码,没有任何Load事件。View属性已由基类设置。我真的很困惑你的评论的方向。 -
@RezaAghaei 您是否尝试将视图设置为详细信息或其他内容?因为默认应该是 LargeIcon。
标签: c# winforms listview windows-forms-designer design-time