質問

リストビューにいくつかの文字列を描画することは可能ですか?

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

ボタンコントロールなど、他のwinformほどカスタマイズ可能なリストはありませんか?

私は乱暴にカスタマイズするつもりはありません。標準のペイントを行った後にさらにペイントするだけです。

役に立ちましたか?

解決

 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));
        }

    }

他のヒント

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

ObjectListView (.NET WinForms ListViewのオープンソースラッパー)およびそのオーバーレイ機能。これにより、次のようなことを簡単に行うことができます。

 ListView上のテキスト

これは次のコードによって作成されました:

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;

OwnerDraw を設定しますプロパティをtrueに設定します。

その後、 DrawItem DrawSubItem 、および描画する DrawColumnHeader イベントListViewの特定の要素。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top