我有一个继承Listview哪个标准必须在瓷砖模式。使用此控件时,DrawItem提供的e.bounds显然是largeIcon视图的界限?当调试来检查它实际设置的视图时,它说它在平铺视图中?然而eDrawText吸引LargeIcon视图?为什么我的listview在LargeIcon View中保持绘图?
.........编辑:.................
这似乎当控制被放置在另一个用户控件只出现呢?
.........编辑2:.................
它变得陌生......当我添加按钮旁边list在运行时更改视图,“Tile”与“LargeIcon”相同,“List”视图与“SmallIcons”相同?我也完全清除的OwnerDraw ...
..........编辑3:.................
MSDN文档:
每个项目显示为一个全尺寸的图标 与商品标签和子项目 信息,它的右边 平铺视图。出现的 子项信息是由应用程序指定的 。此 视图仅在Windows XP 和Windows Server 2003系列上可用。 在较早版本的操作系统,该值被忽略并在LargeIcon 视图ListView的 控制显示器。
那么我在XP?!?
......编辑4 .....................
陌生感的神圣母亲...... 我们现在是在我们已经完全剥离了EVERYTING ...我们在表单上有一个标准的listview,手动填充了3个值。没有所有者撤回。它被设置为平铺。 当我们开始这个表单时,列表被绘制为LARGEICON。
现在,我们开始另一个空白的解决方案,复制此完全相同的形式向新项目,启动调试和低看哪..它被吸入TILE视图????
...帮助...
public class InheritedListView : ListView
{
//Hiding members ... mwuahahahahaha //yeah i was still laughing then
[BrowsableAttribute(false)]
public new View View
{
get { return base.View; }
}
public InheritedListView()
{
base.View = View.Tile;
this.OwnerDraw = true;
base.DrawItem += new DrawListViewItemEventHandler(DualLineGrid_DrawItem);
}
void DualLineGrid_DrawItem(object sender, DrawListViewItemEventArgs e)
{
View v = this.View;
//**when debugging, v is Tile, however e.DrawText() draws in LargeIcon mode,
// e.Bounds also reflects LargeIcon mode ???? **
}
................................
这段代码在不同的解决方案表现不同:
private void InitializeComponent()
{
System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem("fhsdhdsfhsdfhs");
System.Windows.Forms.ListViewItem listViewItem2 = new System.Windows.Forms.ListViewItem("fdshdsfhdsfhsd");
System.Windows.Forms.ListViewItem listViewItem3 = new System.Windows.Forms.ListViewItem("hdshsdfhsdfhsdfsdfsdf");
this.listView1 = new System.Windows.Forms.ListView();
this.SuspendLayout();
//
// listView1
//
this.listView1.Items.AddRange(new System.Windows.Forms.ListViewItem[] {
listViewItem1,
listViewItem2,
listViewItem3});
this.listView1.Location = new System.Drawing.Point(36, 12);
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(487, 242);
this.listView1.TabIndex = 2;
this.listView1.TileSize = new System.Drawing.Size(480, 50);
this.listView1.UseCompatibleStateImageBehavior = false;
this.listView1.View = System.Windows.Forms.View.Tile;
//
// TestControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(595, 712);
this.Controls.Add(this.listView1);
this.Name = "TestControl";
this.Text = "TestControl";
this.ResumeLayout(false);
}
#endregion