• propertygrid 下拉列表


    using System;
    using System.ComponentModel;
    using System.Collections;
    using System.Drawing;
    using System.Windows.Forms;
    
    namespace StandardValuesTest
    { 
    public class StandardValuesIntConverter : System.ComponentModel.TypeConverter
    {
    private ArrayList values;
    public StandardValuesIntConverter()
    {
    // Initializes the standard values list with defaults.
    values = new ArrayList(new int[] { 1, 2, 3, 4, 5 });
    }
    
    // Indicates this converter provides a list of standard values.
    public override bool GetStandardValuesSupported(System.ComponentModel.ITypeDescriptorContext context)
    {
    return true;
    }
    
    // Returns a StandardValuesCollection of standard value objects.
    public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(System.ComponentModel.ITypeDescriptorContext context)
    { 
    // Passes the local integer array.
    StandardValuesCollection svc = 
    new StandardValuesCollection(values); 
    return svc;
    }
    
    // Returns true for a sourceType of string to indicate that 
    // conversions from string to integer are supported. (The 
    // GetStandardValues method requires a string to native type 
    // conversion because the items in the drop-down list are 
    // translated to string.)
    public override bool CanConvertFrom(System.ComponentModel.ITypeDescriptorContext context, System.Type sourceType)
    {
    if( sourceType == typeof(string) )
    return true;
    else 
    return base.CanConvertFrom(context, sourceType);
    }
    
    // If the type of the value to convert is string, parses the string 
    // and returns the integer to set the value of the property to. 
    // This example first extends the integer array that supplies the 
    // standard values collection if the user-entered value is not 
    // already in the array.
    public override object ConvertFrom(System.ComponentModel.ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
    {
    if( value.GetType() == typeof(string) )
    {
    // Parses the string to get the integer to set to the property.
    int newVal = int.Parse((string)value);
    
    // Tests whether new integer is already in the list.
    if( !values.Contains(newVal) )
    {
    // If the integer is not in list, adds it in order.
    values.Add(newVal);
    values.Sort();
    } 
    // Returns the integer value to assign to the property.
    return newVal;
    }
    else
    return base.ConvertFrom(context, culture, value);
    }
    }
    
    // Provides a test control with an integer property associated with 
    // the StandardValuesIntConverter type converter.
    public class IntStandardValuesControl : System.Windows.Forms.UserControl
    {
    [TypeConverter(typeof(StandardValuesIntConverter))]
    public int TestInt
    {
    get
    {
    return this.integer_field;
    }
    set
    {
    if(value.GetType() == typeof(int))
    this.integer_field = value;
    }
    }
    private int integer_field = 0;
    
    public IntStandardValuesControl()
    {
    this.BackColor = Color.White;
    this.Size = new Size(472, 80);
    }
    
    // OnPaint override displays instructions for the example.
    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    {
    if(this.DesignMode)
    {
    e.Graphics.DrawString("TypeConverter.GetStandardValues Example Control", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Blue), 5, 5);
    e.Graphics.DrawString("The type converter for the TestInt property of this", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Black), 5, 20);
    e.Graphics.DrawString("component provides a list of standard values to the", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Black), 5, 30);
    e.Graphics.DrawString("Properties window. Setting a value through a property", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Black), 5, 40);
    e.Graphics.DrawString("grid adds it to the list of standard values.", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Black), 5, 50); 
    }
    else
    {
    e.Graphics.DrawString("TypeConverter.GetStandardValues Example Control", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Blue), 5, 5); 
    e.Graphics.DrawString("This control was intended for use in design mode.", new Font(FontFamily.GenericMonospace, 10), new SolidBrush(Color.Black), 5, 20); 
    }
    }
    }
    }
    

      

    转msdn http://msdn.microsoft.com/zh-cn/library/ayybcxe5(v=vs.80).aspx

  • 相关阅读:
    /bin/bash^M:损坏的解释器: 没有那个文件或目录
    QT槽函数处理线程
    Strategy策略模式
    Proxy代理模式
    Ubuntu系统修改BIOS时间问题
    Ubuntu下安装Goldendict(翻译软件)
    自定义QMenu
    C connect实现Timeout效果(Windows)
    059 Python计算生态概览
    058 程序设计方法学小结
  • 原文地址:https://www.cnblogs.com/crazycxy/p/3223286.html
Copyright © 2020-2023  润新知