2012-03-09 84 views
1

我正在嘗試構建類似電子郵件客戶端的東西。 在傳入的電子郵件列表(列表高,窄), 我想顯示發件人,主題和日期,但沒有任何水平滾動在一行。 例如,左上角的發件人,右上角的日期和第二行的主題。Listview with preview

我在Outlook中看到這種列表,並且在iPhone的郵箱中。

我搜索了一下,看看是否有其他人建立了這樣的列表,但找不到任何。

我使用C#2.0 for Windows,不是 WPF。

任何建議,非常感謝。

謝謝你的時間。

-Rakib

+0

組件廠商通常稱他們爲「的TreeList」。 – 2012-03-09 09:54:58

回答

2

我會建議使用Better ListView。還有免費軟件變種Better ListView Express。

Better ListView修復了所有原始的.NET ListView錯誤,您將永遠不需要解決它的缺點。而最好的事情是更好的ListView是100%託管代碼全部重寫,一個ListView包裝:

Better ListView Overview

1

達到你想要什麼,你都需要深入佈局控制,如TableLayoutPanelPanel,等等,那麼你就需要設計自己的UserControl,將顯示一個電子郵件項目(EmailItemControl)。

一旦你完成了,你會有一個容器來容納這些物品。爲此,您可以使用FlowLayoutPanel。創建一個新的UserControl(EMailListControl),爲其添加一個FlowLayoutPanelflowLayoutPanel1)並將其Dock模式設置爲Fill。

這是一個基本的實現EMailListControl的:

public partial class EMailListControl : UserControl 
{ 
    public EMailListControl() 
    { 
     InitializeComponent(); 

     flowLayoutPanel1.FlowDirection = FlowDirection.TopDown; 
     flowLayoutPanel1.WrapContents = false; 
     flowLayoutPanel1.AutoScroll = true; 

     flowLayoutPanel1.Resize += new EventHandler(flowLayoutPanel1_Resize); 
    } 

    private void flowLayoutPanel1_Resize(object sender, EventArgs e) 
    { 
     foreach (Control control in flowLayoutPanel1.Controls) 
     { 
      UpdateControlWidth(control); 
     } 
    } 

    private void UpdateControlWidth(Control control) 
    { 
     control.Width = flowLayoutPanel1.Width - (flowLayoutPanel1.VerticalScroll.Visible ? SystemInformation.VerticalScrollBarWidth : 0); 
    } 

    public void AddEmailItem(EmailItemControl control) 
    { 
     UpdateControlWidth(control); 
     flowLayoutPanel1.Controls.Add(control); 
    } 
} 
+0

嗨,謝謝你的回覆。但我想要這樣的東西。 http://www.askdavetaylor.com/0-blog-pics/iphone-gmail-inbox.png – Rakib 2012-03-09 22:52:20

+0

這不是TreeList thingy。我修改了我的答案,以反映您正在尋找的內容。 – AVIDeveloper 2012-03-09 23:50:06