A first step in improving the structure of the code for extensibility would be to define what the game actually is.
If we consider the scenario where you will implement this game in a GUI as well, it would be desirable to split the functionality so that the game remains the same and only the input and output need to be changed.
A first step would ...
I've already left a fairly lengthy post where I have detailed most of my observations.
Here I want to focus only on the AddOrEditResidentDlg class's DataBinding thingy.
As I said I'm not a huge fan of the repetitive code like these:
CurrentTenant.LastName = ANR_TenantLastName_TB.Text;
CurrentTenant.FirstName = ANR_TenantFirstName_TB.Text;