Use file mask |*/
to exclude all (sub-)directories.
Use the TransferOptions.FileMask
property to set the file mask.
TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "|*/";
session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions).Check();
Specifically for your sample, do:
tOpts.FileMask = c.SearchPattern + "|*/";
Also documented in WinSCP FAQ How do I transfer (or synchronize) directory non-recursively?