首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IFormatProvider的DataBindings.Add

使用IFormatProvider的DataBindings.Add
EN

Stack Overflow用户
提问于 2009-04-24 17:46:11
回答 1查看 2.7K关注 0票数 3

我正在尝试使用IFormatProvider来自定义一些数据绑定;但是IFormatProvider类从未被调用过。我在自定义格式化类中将断点放在这两个函数的开头,并且都没有通过数据绑定进行命中。当我在String.Format中使用我的自定义格式化类时,它可以工作。

我使用的是WinForm2.0和.Net。

这就是我做数据绑定的方法:

代码语言:javascript
复制
label1.DataBindings.Add("Text", textBox1, "Text", true, 
                            DataSourceUpdateMode.OnPropertyChanged, 
                "<NULL>","{0:H}",new MyFormat());

我是这样使用String.Format的:

代码语言:javascript
复制
string test =(string.Format(_superFormat, "{0}", "this is my arg"));

这是我的自定义格式化类:

代码语言:javascript
复制
    class MyFormat : IFormatProvider, ICustomFormatter
    {
        string ICustomFormatter.Format(string format, object arg, IFormatProvider formatProvider)
        {
            string result = ((string)arg).ToUpper();
            return result ;
        }
        object IFormatProvider.GetFormat(Type formatType)
        {
            if (formatType == typeof(ICustomFormatter))
                return this;
            else
                return null;
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-24 20:07:41

你到底想做什么?

假设Text属性是一个字符串,那么据我所知它不能使用格式化程序,因为string没有实现IFormattable

Binding类(支撑DataBindings.Add)有一个可用于控制格式的Format事件和Parse事件。您还可以在目标绑定属性上使用TypeConverter,我喜欢这一点,因为它将此逻辑从UI中移出。

那么:你有一个你想做的例子吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/786903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档