.FormatString属性对绑定没有影响

时间:2017-11-14 18:51:03

标签: c# winforms

我的代码中有这一行

UserLoginLabel.DataBindings.Add(new Binding("Text", Foo, "bar.Username"));

正确显示文本框中的用户名(以及用户名)。怎么来这个代码

Binding b = new Binding("Text", Foo, "bar.Username")
{
    FormatString = "Logged in as {0}.",
    FormattingEnabled = true
};
UserLoginLabel.DataBindings.Add(b);

有完全相同的效果吗?这不是如何格式化数据绑定吗?

1 个答案:

答案 0 :(得分:2)

您需要使用Format事件:

var b = new Binding("Text", Foo, "bar.Username");
b.FormattingEnabled = true;
b.Format += b_Format;
UserLoginLabel.DataBindings.Add(b);

private void b_Format(Object sender, ConvertEventArgs e)
{
    if (e.DesiredType == typeof(String))  //optional, you decide
        e.Value = $"Logged in as {e.Value}.";
}

您必须注意的是,每次要格式化值时,都会将其命名为。这可能由于多种原因而发生,因此您可以获得已格式化的e.Value