在我的情况下,SaveFileDialog
不会写任何文件,但我想用来指定命令行应用程序的路径,该应用程序将在sf对话框中的“已保存”的相同位置创建日志文件。
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.txt";
string sfdname = saveFileDialog1.FileName;
if (sfd.ShowDialog() == DialogResult.OK)
{
Path.GetFileName(sfd.FileName);
}
startInfo.Arguments = "--log=" + Path.GetFileName(sfd.FileName);
答案 0 :(得分:11)
您可以使用
Path.GetFullPath(sfd.FileName);
而不是
Path.GetFileName(sfd.FileName);
完整版......
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.txt";
string sfdname = saveFileDialog1.FileName;
if (sfd.ShowDialog() == DialogResult.OK)
{
Path.GetFullPath(sfd.FileName);
}
startInfo.Arguments = "--log=" + Path.GetFullPath(sfd.FileName);
答案 1 :(得分:5)
只需删除Path.GetFileName
:
startInfo.Arguments = "--log=\"" + sfd.FileName + "\"";
答案 2 :(得分:2)
我认为您根据所描述的内容使用了错误的对话框。
尝试使用FolderBrowserDialog
类:
string folderPath = string.Empty;
using (FolderBrowserDialog fdb = new FolderBrowserDialog()) {
if (fdb.ShowDialog() == DialogResult.OK ){
folderPath = fdb.SelectedPath;
}
}
if (folderPath != string.Empty) {
startInfo.Arguments = "--log=" + folderPath;
}
答案 3 :(得分:0)
也许Path.GetFullPath
会有所帮助?
答案 4 :(得分:0)
问题可能是使用了错误的FileSaveDialog
Win32.dll
中的那个不提供完整路径,但System.Windows.Forms
中的那个提供。{/ p>
答案 5 :(得分:0)
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Image files | *.jpg";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
employee_dp.Image = Image.FromFile(openFileDialog1.FileName);
string path = System.IO.Path.GetDirectoryName(openFileDialog1.FileName);
string onlyFileName = System.IO.Path.GetFileName(openFileDialog1.FileName);
filepath = Path.GetFullPath(path).Replace(@"\", @"\\");
filepath = filepath + "\\\\" + onlyFileName;
MessageBox.Show(filepath);