System.IO.FileSystemWatcher is built for monitoring file changes. As "opening a file" does not change the file itself, it won't work for sure.
there are possible ways to do this
Option 1
You can detect if a file is in use either by a WMI Query (if your OS is windows based) or by opening the file for write (Exception occurs when file is in use).
Option 2
You could try to get a handle on the file, and see the which process has the ownership. If so, the file is open by somebody else. check this post Using C#, how does one figure out what process locked a file?