c# - DataBinding between multiple controls and a single object -


just getting started data binding in c# , looking help. below binding statements break (visible property stops toggling mybool & myboolinverse) when line binding selecteditem of combo box myenumvar of businessobject executes. binding directly object instead of bindingsource, or binding selectedvalue instead of selecteditem, has same effect. further, value of myenumvar doesn't change selections combo box. doing wrong?

public partial class form1 : form {     bindingsource bs = new bindingsource();     private businessobject bo = new businessobject();      public form1()     {         initializecomponent();         bs.datasource = bo;          // checkbox determines type of dialog display.         boolcheckbox.databindings.add("checked", bs, "mybool", true,             datasourceupdatemode.onpropertychanged);          truebox.databindings.add("visible", bs, "myboolinverse");         falsecombobox.databindings.add("visible", bs, "mybool");         falsebox.databindings.add("visible", bs, "mybool");         falsebutton.databindings.add("visible", bs, "mybool");          myenumcombobox.datasource = enum.getvalues(             typeof(businessobject.myenum));         // line below breaks above bindings, same selectedvalue.         myenumcombobox.databindings.add("selecteditem", bs, "myenumvar");     } } class businessobject : inotifypropertychanged {     public enum myenum { red, blu }     myenum _myenumvar;     public myenum myenumvar     {         { return _myenumvar; }         set         {             if (value != _myenumvar)             {                 _myenumvar = value;                 notifypropertychanged("myenumvar");             }         }     }      private bool _mybool;     public bool mybool     {         { return _mybool; }         set         {             if (value != _mybool)             {                 _mybool = value;                 myboolinverse = !value;                 notifypropertychanged("mybool");             }         }     }      private bool _myboolinverse;     public bool myboolinverse     {         { return _myboolinverse; }         private set         {             if (value != _myboolinverse)             {                 _myboolinverse = value;                 notifypropertychanged("myboolinverse");             }         }     }      public businessobject()     {         myboolinverse = !mybool;         myenumvar = myenum.blu;     }      // boilerplate inotifypropertychanged implementation & helper.     public event propertychangedeventhandler propertychanged;     private void notifypropertychanged(string propertyname = "")     {         propertychangedeventhandler handler = propertychanged;         if (handler != null)         {             handler(this, new propertychangedeventargs(propertyname));         }     } } 

visible property has problems binding. try manual 'binding'. along lines of

truebox.visible = bo.myboolinverse; bo.propertychanged += (s, e) => {    if(e.propertyname == "myboolinverse")      truebox.visible = bo.myboolinverse;  }; 

edit: also, binding myenumvar not working beacause not declared public property.


Comments

Popular posts from this blog

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -