Атрибут для указания формата отображения свойства или поля - PullRequest
1 голос
/ 05 июня 2010

В настоящее время я уже украшаю свойства в своих бизнес-объектах атрибутами, связанными с проверкой в ​​Windows Forms.

Я хотел бы добавить атрибуты, которые бы определяли, как данные форматируются. Мы надеемся, что это сработает с привязкой данных.

Есть ли способ сделать это?

1 Ответ

3 голосов
/ 05 июня 2010

Форматирование достигается (в winforms) с помощью двух основных подходов:

  • для крупнозернистого форматирования, переопределение ToString()
  • для детального форматирования, определите подкласс TypeConverter и используйте [TypeConverter(...)] для вашего пользовательского типа (или свойств класса и т. Д.), Чтобы применить форматирование (если целевой тип typeof(string))

Например:

using System;
using System.ComponentModel;
using System.Windows.Forms;
class MyObject
{
    [TypeConverter(typeof(MyConverter))]
    public decimal SomeValue { get; set; }
}

class MyConverter : TypeConverter {
    public override object  ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, System.Type destinationType)
    {
        if(destinationType == typeof(string)) {
            return "Our survery says: " + value + "%";
        }
         return base.ConvertTo(context, culture, value, destinationType);
    }
}
static class Program {
    [STAThread]
    static void Main() {
        using(var form = new Form()) {
            form.DataBindings.Add("Text",new MyObject { SomeValue = 27.1M}, "SomeValue", true);
            Application.Run(form);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...