Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WinForms Usercontrol и ресурсы / 1 сообщений из 1, страница 1 из 1
16.04.2013, 18:48
    #38228078
tual
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinForms Usercontrol и ресурсы
Есть у меня юзерконтрол который рисует всякое и пользуется объектом типа Encoding в своей работе.
Есть у него паблик проперти
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[TypeConverter(typeof(EncodingConverter))]
        [Description("Text's Encoding")]
        [Category("MyCategory")]
        [Bindable(true)]
        [Localizable(true)]
        [Browsable(true)]
        public Encoding TextEncoding
        {
            get { return zz.TextEncoding; }
            set
            {
                zz.TextEncoding = value;
                Invalidate();
            }
        }



Бяка в том, что в designer.cs студия прописывает такую строку
this.myControl1.TextEncoding = ((System.Text.Encoding) (resources.GetObject("myControl1.TextEncoding")));
чего мне совсем не надо!
я хочу видеть нечто типа
this.myControl1.TextEncoding = Encoding.Default, и никаких ресурсов.

Я пробовал убирать Localizable - все равно, добавлять DesignerSerializationVisibity не хочу ибо значение надо сохранять.

Код тайп конвертера

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
internal sealed class EncodingConverter : TypeConverter
    {
        public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
        {
            return true;
        }

        public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
        {
            return true;
        }

        public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            EncodingList encodings = new EncodingList();
            foreach (EncodingInfo enc in Encoding.GetEncodings())
                encodings.Add(enc.GetEncoding());

            encodings.Sort(new EncodingComparer());
            encodings.Insert(0, Encoding.Default);

            return new StandardValuesCollection(encodings.ToArray());
        }

        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            if (!(value is string))
                return base.ConvertFrom(context, culture, value);

            string[] split = value.ToString().Split(new char[1] { ':' }); // CodePage: {1}
            return Encoding.GetEncoding(int.Parse(split[1].Trim()));
        }

        public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
        {
            if (destinationType == null)
                throw new ArgumentNullException("destinationType");

            if (destinationType == typeof(string) && value is Encoding)
            {
                Encoding val = value as Encoding;
                return string.Format("{0}, CodePage: {1}", val.EncodingName, val.CodePage);
            }

            return base.ConvertTo(context, culture, value, destinationType);
        }

        public override bool GetCreateInstanceSupported(ITypeDescriptorContext context)
        {
            return true;
        }

        public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues)
        {
            return Encoding.GetEncoding((int)propertyValues["CodePage"]);
        }

        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
        {
            return sourceType == typeof(string);
        }

        public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
        {
            return destinationType == typeof(string);
        }
}



EncodingList можно сказать что просто List<Encoding> с парой функций навешанных сверху.

Вообщем как не трогать ресурсы и по-нормальному сохранять значение в designer.cs ?
Спасибо
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / WinForms Usercontrol и ресурсы / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]