The fact that you're specifying only the database file name and not the path means that the path is assumed to be the application's current directory. When you app starts up its current directory will be the folder containing the EXE by default. When you display an OpenFileDialog, the current directory of the app follows wherever the user navigates. When they close the dialogue, the current directory is restored to its original location IF RestoreDirectory is True. In your case it's not so the current directory remains the folder containing the file that was opened.

As I said before, you might want to set RestoreDirectory to True but, even if you do, you should still change your connection string. You should NEVER rely on the current directory unless you specifically want to follow the current directory even if it changes. If you want the folder containing the EXE then you should specify that folder. Your connection string should be:
Code:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source = |DataDirectory|\UserData.mdb;User Id=admin;Password=;
The |DataDirectory| will resolve to the correct location whether you're debugging or you've deployed.