Frage

Ist es möglich, einige Saiten auf eine Listenansicht zu ziehen?

I außer Kraft gesetzt, das OnPaint Ereignisses, aber ich sehe keine Veränderung. Ich hatte einige Codes auf benutzerdefinierte Listenansicht aus, aber es scheint, wie Menschen sind mit p / aufrufen, usw. Warum?

Ist das nicht so individuell wie andere winforms Liste, wie das Button-Steuerelement?

Ich werde nicht wild anpassen, nur etwas mehr malen, nachdem es die Standard-Malerei gemacht hat.

War es hilfreich?

Lösung

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

    }

Andere Tipps

Sie können nicht nur die OnPaint() Methode außer Kraft setzen. Diese Methode macht nichts in einem Listview. In ähnlicher Weise OwnerDrawn können benutzerdefinierte Sie jede Zelle ziehen, aber Sie das Steuerelement als Ganzes übermalen nicht nachlässt.

Verwenden Sie ein Object (eine Open-Source-Wrapper um .NET WinForms Listview ) und verwendet sein Overlay-Funktion . Das lässt Sie mühelos etwas tun, wie folgt aus:

Dies wurde durch diesen Code erzeugt:

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;

Stellen Sie den OwnerDraw Eigenschaft auf true.

Sie können dann behandeln die DrawItem , DrawSubItem , und DrawColumnHeader Ereignisse ziehen spezifische Elemente des Listview.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top