Did you call “MapControl.Refresh()” after setting the “MapControl.CurrentScale=NewZoomlevel”? Another thing is if you want to use your own zoomlevel, the MapControl.ZoomLevelSet.CustomZoomLevels needs to be set, attached is the sample code we tested, could you have a try.
I'm sorry that i didn't explain the CustomZoomLevels very clearly before. It's designed for the requirements that the Map Suite default zoom levels don't fit some special requirements. If we use CustomZoomLvels, the map control will ignore the default zoom levels and calculate the map's current scale based on the map's width/height and current extent, and then use the calculated scale to get a zoom level whose scale is closest to the calculated scale. So I guess the current extent in your demo may be out of range in your CustomZoomLevels and the map will take the biggest/smallest zoom levels all the time.
Besides, the method "GetScale" in ExtentHelper class might be useful to you, It can calculate the map's scale based on current extent and size. please check it out.