Before I answer each of your questions, there are some things I should probably clarify. Villagers don't randomly move in a matter of hours, unless you're time travelling. They start thinking about moving some days ahead. Once they start thinking about moving, you get the chance to stop them, since they'll usually ping you about it. Sometimes you can also stop them from moving by talking to them once they've initiated the moving process. On their last day in your town, a villager will always be at home and their furniture will have been replaced by boxes. Only one villager thinks about moving at a time and someone can start thinking about moving as soon as the next day after you've told someone to stay.
A villager who is in your shops and museum (your Main Street) can still be thinking about moving. Whoever is visiting your Main Street is random, and the location of villagers changes every few hours, so you'll still have a chance to find and talk to that villager elsewhere. On their last day in your town, they're never in your Main Street or outside.
The best way to keep your villagers from moving is by making sure to talk to everyone at least once a day, and to talk to some villagers more than once. If someone is thinking about moving, they may let you know by gossiping about it. There's no way to force this gossip to happen, it's just random dialogue that pops up during conversations.
Usually, villagers ping you when they want to ask you to move. If they're not pinging you but you've heard from someone else that they're going to move, save your game, quit, load the game again, and go find that villager. If they don't ping you, talk to them a few times before repeating that process. Keep doing this until they bring it up.
I have a guide about not losing villagers when you go on hiatus:
http://www.belltreeforums.com/showthread.php?209379-How-To-Not-Lose-Villagers-When-You-re-Away
Since you're asking about events, how far away is the event? Are you on the day of the event? How long has the villager been thinking about moving?