Heim >Backend-Entwicklung >C++ >Wie kann ich die Größenänderung von Spalten zur Entwurfszeit in benutzerdefinierten Windows Forms-Steuerelementen aktivieren?

Wie kann ich die Größenänderung von Spalten zur Entwurfszeit in benutzerdefinierten Windows Forms-Steuerelementen aktivieren?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 18:21:41142Durchsuche

How Can I Enable Design-Time Column Resizing in Custom Windows Forms Controls?

Designunterstützung in benutzerdefinierten Steuerelementen aktivieren

Beim Erstellen benutzerdefinierter Steuerelemente ist es wünschenswert, die gleiche Funktionalität wie die Basissteuerelemente beizubehalten. Eine dieser Funktionen ist die Möglichkeit, die Größe von Spalten durch Ziehen von Kopfzeilen zur Entwurfszeit zu ändern. Benutzerdefinierte Steuerelemente erben dieses Verhalten jedoch standardmäßig nicht.

Der Windows Forms-Designer verwendet dedizierte Designerklassen für bestimmte Steuerelemente. Der Designer für eine ListView ist beispielsweise die interne Klasse System.Windows.Forms.Design.ListViewDesigner. Beim Platzieren einer ListView auf einem Benutzersteuerelement wird stattdessen der Standard-ControlDesigner verwendet, der nicht die Möglichkeit bietet, Spaltenüberschriften zu ziehen.

Um dies zu beheben, können Sie einen benutzerdefinierten Designer für das Benutzersteuerelement erstellen. Indem Sie die zugrunde liegende ListView über eine öffentliche Eigenschaft verfügbar machen und das Attribut [DesignerSerializationVisibility] anwenden, können Sie zur Entwurfszeit auf die Eigenschaften der ListView zugreifen und diese ändern. Darüber hinaus können Sie durch Anwenden des Attributs [Designer] auf die Benutzersteuerelementklasse den Standarddesigner durch Ihren benutzerdefinierten ersetzen.

Betrachten Sie das folgende Beispiel:

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;   // Note: add reference required: System.Design.dll

namespace WindowsFormsApplication1 {
    [Designer(typeof(MyDesigner))]   // Note: custom designer
    public partial class UserControl1 : UserControl {
        public UserControl1() {
            InitializeComponent();
        }

        // Note: property added
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public ListView Employees { get { return listView1; } }
    }

    // Note: custom designer class added
    class MyDesigner : ControlDesigner {
        public override void Initialize(IComponent comp) {
            base.Initialize(comp);
            var uc = (UserControl1)comp;
            EnableDesignMode(uc.Employees, "Employees");
        }
    }
}

Mit diesem benutzerdefinierten Designer , die ListView innerhalb des Benutzersteuerelements kann wie eine eigenständige ListView angeklickt und gestaltet werden.

Das obige ist der detaillierte Inhalt vonWie kann ich die Größenänderung von Spalten zur Entwurfszeit in benutzerdefinierten Windows Forms-Steuerelementen aktivieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn