(0) exportieren Drucken
Alle erweitern

Gewusst wie: Erstellen eines UI-Typ-Editors

Die folgenden Codebeispiele enthalten zwei unterschiedliche UI-Typ-Editoren für zwei Eigenschaften des FlashTrackBar-Steuerelements, das unter Gewusst wie: Erstellen eines Windows Forms-Steuerelements, das den Fortschritt anzeigt beschrieben wird.

Im ersten Beispiel wird der FlashTrackBarValueEditor auf die Value-Eigenschaft angewendet, und die folgenden Aspekte werden veranschaulicht:

  • Wie der FlashTrackBarValueEditor die UITypeEditor-Klasse erweitert.

  • Wie die EditValue-Methode überschrieben wird, um die Eigenschaften des Editors festzulegen.

  • Wie die GetEditStyle-Methode überschrieben wird, um den Stil für den Editor anzugeben.

Im zweiten Beispiel erweitert der FlashTrackBarDarkenByEditor den FlashTrackBarValueEditor und überschreibt eine Hilfsmethode, um Eigenschaften festzulegen. Der FlashTrackBarDarkenByEditor wird auf die DarkenBy-Eigenschaft der FlashTrackBar angewendet.

NoteHinweis

Sie müssen diese Beispiele zusammen mit dem FlashTrackBar-Steuerelement kompilieren, wie in Gewusst wie: Erstellen eines Windows Forms-Steuerelements, das den Fortschritt anzeigt beschrieben.

FlashTrackBarValueEditor

namespace Microsoft.Samples.WinForms.Cs.FlashTrackBar {
    using System;
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Diagnostics;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Drawing.Design;
    using System.Windows.Forms;
    using System.Windows.Forms.ComponentModel;
    using System.Windows.Forms.Design;

    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")] 
    public class FlashTrackBarValueEditor : System.Drawing.Design.UITypeEditor {

        private IWindowsFormsEditorService edSvc = null;

        protected virtual void SetEditorProps(FlashTrackBar editingInstance, FlashTrackBar editor) {
            editor.ShowValue = true;
            editor.StartColor = Color.Navy;
            editor.EndColor = Color.White;
            editor.ForeColor = Color.White;
            editor.Min = editingInstance.Min;
            editor.Max = editingInstance.Max;
        }

        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) {

            if (context != null
                && context.Instance != null
                && provider != null) {

                edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));

                if (edSvc != null) {
                    FlashTrackBar trackBar = new FlashTrackBar();
                    trackBar.ValueChanged += new EventHandler(this.ValueChanged);
                    SetEditorProps((FlashTrackBar)context.Instance, trackBar);
                    bool asInt = true;
                    if (value is int) {
                        trackBar.Value = (int)value;
                    }
                    else if (value is byte) {
                        asInt = false;
                        trackBar.Value = (byte)value;
                    }
                    edSvc.DropDownControl(trackBar);
                    if (asInt) {
                        value = trackBar.Value;
                    }
                    else {
                        value = (byte)trackBar.Value;
                    }
                }
            }

            return value;
        }

        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) {
            if (context != null && context.Instance != null) {
                return UITypeEditorEditStyle.DropDown;
            }
            return base.GetEditStyle(context);
        }

        private void ValueChanged(object sender, EventArgs e) {
            if (edSvc != null) {
                edSvc.CloseDropDown();
            }
        }
    }
}


FlashTrackBarDarkenByEditor

namespace Microsoft.Samples.WinForms.Cs.FlashTrackBar {
   using System;
   using System.ComponentModel;
   using System.ComponentModel.Design;
   using System.Diagnostics;
   using System.Drawing;
   using System.Drawing.Drawing2D;
   using System.Drawing.Design;
   using System.Windows.Forms;
   using System.Windows.Forms.ComponentModel;
   using System.Windows.Forms.Design;

   public class FlashTrackBarDarkenByEditor : FlashTrackBarValueEditor {
       protected override void SetEditorProps(FlashTrackBar editingInstance, FlashTrackBar editor) {
           base.SetEditorProps(editingInstance, editor);
           editor.Min = 0;
           editor.Max = byte.MaxValue;
       }
   }
}


Siehe auch

Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft