2009-10-22 13 views
5

一部の文字列をリストビューに描画することはできますか?Winformsのカスタムリストビュー?

私はOnPaintイベントをオーバーライドしましたが、私は変更を見ません。カスタムリストビューでいくつかのコードをチェックアウトしましたが、人々がp/invokeなどを使用しているようです。なぜですか?

リストはButtonコントロールのように他のwinformsと同じようにカスタマイズできませんか?

私は荒々しくカスタマイズするつもりはなく、標準的な絵画を完成した後にもう少しペイントします。

答えて

7
class MyCustomlistView : ListView 
    { 
     public MyCustomlistView() 
      : base() 
     { 
      SetStyle(ControlStyles.UserPaint, true); 
     } 
     protected override void OnPaint(PaintEventArgs e) 
     { 
      base.OnPaint(e); 
      e.Graphics.DrawString("This is a custom string", new Font(FontFamily.GenericSerif, 10, FontStyle.Bold), Brushes.Black, new PointF(0, 50)); 
     } 

    } 
+0

おかげで、これはトリックをしました。 –

+0

これはListViewでは機能しません。これは単に、ListViewが何も描画しないようにします。 – Grammarian

8

OnPaint()メソッドを上書きすることはできません。そのメソッドはListViewで何もしません。同様に、OwnerDrawnでは、各セルをカスタム描画できますが、コントロール全体にペイントすることはできません。

ObjectListView(.NET WinForms ListViewのオープンソースラッパー)を使用し、そのOverlay featureを使用します。これは、このコードによって生成された

text over a ListView http://i37.tinypic.com/29zwu1d.jpg

:それはあなたが楽にこのような何かを行うことができます

this.olv1.OverlayText.Alignment = ContentAlignment.BottomRight; 
this.olv1.OverlayText.Text = "Trial version"; 
this.olv1.OverlayText.BackColor = Color.White; 
this.olv1.OverlayText.BorderWidth = 2.0f; 
this.olv1.OverlayText.BorderColor = Color.RoyalBlue; 
this.olv1.OverlayText.TextColor = Color.DarkBlue; 
関連する問題