WinformsのカスタムListView?
質問
リストビューにいくつかの文字列を描画することは可能ですか?
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のオープンソースラッパー)およびそのオーバーレイ機能。これにより、次のようなことを簡単に行うことができます。
これは次のコードによって作成されました:
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の特定の要素。
所属していません StackOverflow