当前位置: 代码迷 >> C# >> 求C#自定义数据类型属性编写
  详细解决方案

求C#自定义数据类型属性编写

热度:82   发布时间:2016-05-05 04:24:15.0
求C#高手指点自定义数据类型属性编写
问题如下:我用Windows Froms Control Library工程继承UserControl类,然后编写了一个自定义类型的属性,问题是为什么我的属性值修改不 了呢?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime;
using System.Runtime.InteropServices;

namespace PropertyTest
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        [Category("自定义属性")]
        [Description("这个是用来进来进行属性测试的")]
        [Browsable(true)]
        [TypeConverter(typeof(ExpandableObjectConverter))]       
        public class ChartValue
        {
            public ChartValue(int inX, int inY)
            {
                x = inX;
                y = inY;
            }

            public int X
            {
                set
                {
                    x = value;
                }
                get
                {
                    return x;
                }
            }

            public int Y
            {
                set
                {
                    y = value;
                }
                get
                {
                    return y;
                }
            }
            private int x;
            private int y;
        }

        private ChartValue stChangeValue;

        public ChartValue ChangeValue
        {
            set
            {
                stChangeValue = value;
            }
            get
            {
                return stChangeValue;
            }
        } 
    }
}


跪求高手帮忙指导一下,急!!!感谢!!!
------解决思路----------------------
你用 ILSpy  看看 Location是怎么定义的
------解决思路----------------------
那个属性是空的吧, 你的构造方法又要带参数, 不知道是不是这个原因.
也许需要写一个 TypeConvert 专门来进行 ChartValue 与 string 的互相转换.
------解决思路----------------------
要定义一个converter
------解决思路----------------------
需要加个转换器,将第三方类型转化为可识别的string
------解决思路----------------------
http://blog.csdn.net/aqimide/article/details/6161470
------解决思路----------------------
这个属性是一个自定义的类型,不是系统基本类型,手动输入的什么数据需要有相应格式去匹配才行吧。
------解决思路----------------------
引用:
http://blog.csdn.net/aqimide/article/details/6161470


这个完全解答题主问题。
------解决思路----------------------
你的只要展开,不用ConvertFrom ConvertTo的,应该不需要将字符转成对象吧

    internal class StyleTypeConverter : TypeConverter
    {
        public override bool GetPropertiesSupported(ITypeDescriptorContext context)
        {
            return true;
        }
    }

//然后在你的属性上指定下就行了

        [TypeConverter(typeof(StyleTypeConverter))]
        public MyStyle Style
        {
            get { return _style; }
            set { _style = value; }
        }
  相关解决方案