为TextBox设置绑定空值

时间:2013-11-22 08:31:07

标签: c# winforms data-binding

我的textbox.text属性有一个字符串绑定,一旦绑定为null,我的文本框中就不会显示任何内容。但是我想显示一个不同的文本而不是String.Empty

在wpf中有一个属性TargetNullValue,它在那里为我工作。但我在WinForms NullValue中找不到等价物,DataSourceNullValue对我来说也没有做同样的事情......

所以这里是我的代码示例

list= new BindingList<item>();
BindingSource bs = new BindingSource();
bs.DataSource = list;

Binding tbBinding= new Binding("Text", bs, "Name", true, DataSourceUpdateMode.OnPropertyChanged);
tb.DataBindings.Add(tbBinding);

绑定工作正常,直到列表为空。我不知道如何正确指定空值

编辑:

新代码段

        selectedSweeps = new BindingList<Sweep>();
        BindingSource bsSweep = new BindingSource();
        bsSweep.DataSource = selectedSweeps;
        lbSelectedSweeps.DataSource = bsSweep;
        lbSelectedSweeps.DisplayMember = "DisplayText";

        Binding nameBinding = new Binding("Text", bsSweep, "Name", true, DataSourceUpdateMode.OnPropertyChanged);
        nameBinding.NullValue = "error text";
        tbSweepName.DataBindings.Add(nameBinding);

2 个答案:

答案 0 :(得分:0)

您可以为文本框添加TextChanged事件。 转到设计器,双击文本框,以下事件将显示在代码中: 在括号之间添加代码以检查.Text属性。

private void textbox_TextChanged(object sender, EventArgs e)
{
    //Check if .Text property of textbox is equal to null or is empty.
    if(String.IsNullOrEmpty(textbox.text))
    {
        //Set Default empty value here.
    }
}

答案 1 :(得分:0)

我认为您想使用使用自定义格式字符串的Binding Constructor overload

而不是

Binding tbBinding= new Binding(
        "Text", 
        bs, 
        "Name", 
        true, 
        DataSourceUpdateMode.OnPropertyChanged);

尝试类似

的内容
Binding tbBinding= new Binding(
        "Text", 
        bs, 
        "Name", 
        true, 
        DataSourceUpdateMode.OnPropertyChanged,
        "[not specified]");