Data binding for TextBox

后端 未结 4 1705
难免孤独
难免孤独 2020-11-28 09:04

I have a basic property that stores an object of type Fruit:

Fruit food;
public Fruit Food
{
    get {return this.food;}
    set
    {
        this.food= val         


        
相关标签:
4条回答
  • 2020-11-28 09:16

    We can use following code

    textBox1.DataBindings.Add("Text", model, "Name", false, DataSourceUpdateMode.OnPropertyChanged);
    

    Where

    • "Text" – the property of textbox
    • model – the model object enter code here
    • "Name" – the value of model which to bind the textbox.
    0 讨论(0)
  • 2020-11-28 09:24

    You can't databind to a property and then explictly assign a value to the databound property.

    0 讨论(0)
  • 2020-11-28 09:27

    You need a bindingsource object to act as an intermediary and assist in the binding. Then instead of updating the user interface, update the underlining model.

    var model = (Fruit) bindingSource1.DataSource;
    
    model.FruitType = "oranges";
    
    bindingSource.ResetBindings();
    

    Read up on BindingSource and simple data binding for Windows Forms.

    0 讨论(0)
  • 2020-11-28 09:32

    I Recommend you implement INotifyPropertyChanged and change your databinding code to this:

    this.textBox.DataBindings.Add("Text",
                                    this.Food,
                                    "Name",
                                    false,
                                    DataSourceUpdateMode.OnPropertyChanged);
    

    That'll fix it.

    Note that the default DataSourceUpdateMode is OnValidation, so if you don't specify OnPropertyChanged, the model object won't be updated until after your validations have occurred.

    0 讨论(0)
提交回复
热议问题