They way you are supposed to do this is set the macro variable def_switchbuf_cd.
However, this option is very unreliable and there are several ways in which it fails.
Since before version 8 I've been adding this line of code to several SlickEdit functions include gui_open, gui_save_as and gui_find:
cd(strip_filename(p_buf_name,'N'),'');
This is very effective.
I've reported this at least a couple of times to Slickedit before V12, and this is still a problem in VS12 - so I
still have to add this code to guifind, guiopen, etc.
Example: RUn VS. Open C:\foo\bar\a.c
From a cmd window,
cd C:\blat
vs Another.c
Now, in VS the current buffer is Another.c
From VS, File->Open
note that the current directory is C:\foo\bar instead of C:\blat