2012-03-09 4 views
1

私は電子メールクライアントのようなものを構築しようとしています。 受信メールのリスト(リストは背の高い、狭いです)の 送信者、件名、日付は1行に横スクロールせずに表示します。 たとえば、送信者は左上に、日付は右上に、件名は第2行に表示されます。プレビューリストビュー

OutlookやiPhoneのメールボックスにこの種類のリストがあります。

他の誰かがこの種のリストを作成しているかどうかを調べてみましたが、何も見つかりませんでした。

Windows用のC#2.0、 WPFを使用しています。

どのような提案も高く評価されています。

お時間をいただきありがとうございます。あなたが望むものを達成するために

-Rakib

+0

コンポーネントベンダーは通常、「TreeList」それらを呼び出す:そして最もよい事は良い、リストビューが100%マネージドコードで完全に書き直し、ない ListViewのラッパーであることです。 –

答えて

2

私はBetter ListViewを使用することをお勧めします。フリーウェアのバリアントであるBetter ListView Expressも利用可能です。

Better ListViewは、元の.NET ListViewのバグをすべて修正し、その欠点を解決する必要はありません。

Better ListView Overview

1

、あなたは、あなたは、単一の電子メールアイテムを表示する独自のUserControlを設計する必要がありますなどTableLayoutPanelPanel、などレイアウトコントロールに掘るする必要があります(EmailItemControl)。

これで完了したら、それらのアイテムを保持するコンテナになります。このために、FlowLayoutPanelを使用できます。新しいUserControl(EMailListControl)を作成し、FlowLayoutPanelを追加し(flowLayoutPanel1)、その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

+0

これはTreeListのものではありません。あなたが探しているものを反映するように答えを修正しました。 – AVIDeveloper