I would assume that these controls are unbound, because if they were bound this should not be a problem. The reason that they all change, is that they are in fact just 1 control. Everything else is "paint on the screen"
So here is the solution I use. Actually, build a field called "blnSelected". Now this is a strange field, because it is only a place holder to allow me to populate some other table. So here is an example lets say you have People and a Chinese Menu. You have a main form with people and a subform showing the menu Choices. Based on a People table and a Menu table
tblPeople
personID
personName
other people fields
tblMenu
menuID
MenuItem
Cost
blnSelected
Now you have a join (junction) table that allows the many to many relationship
joinTblPeople_MenuChoices
FKpersonID
FKmenuID
Since "blnSelected" is bound I can change each records individual value. So a Person can make menu choices by clicking down the list. On the On Current event of the Main form I read from, and write to, the join table. So after I select some menu choices for a person, I read each selected Menu item and populate the join table with the Person ID, and every selected menu ID. When I go to the next record I read from the join table and populate the selected menu items.
This is one way of making a Many To Many form where you choose from a list, and it works well.
The other solution to this is a completely unbound form. The level of difficulty goes way up.