我有一個繼承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