我有openfiledialog用文件信息读取用户图像地址并将其加载到文本框
我想要另一个按钮以打开图像地址(已保存在文本框中)
如何在wpf中编码此按钮?我知道我应该使用process.start但不知道!
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
tbl_Moshtari tt = new tbl_Moshtari();
dlg.FileName = "pic-file-name"; // Default file name
dlg.DefaultExt = ".jpg"; // Default file extension
dlg.Filter = "JPEG(.jpeg)|*.jpeg | PNG(.png)|*.png | JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"; // Filter files by extension
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
//// picbox.Source = new BitmapImage(new Uri(dlg.FileName, UriKind.Absolute));
//bitmapImage = new BitmapImage();
//bitmapImage.BeginInit();
//bitmapImage.StreamSource = System.IO.File.OpenRead(dlg.FileName);
//bitmapImage.EndInit();
////now, the Position of the StreamSource is not in the begin of the stream.
//picbox.Source = bitmapImage;
FileInfo fi = new FileInfo(dlg.FileName);
string filename = dlg.FileName;
txt_picaddress.Text = filename;
System.Windows.MessageBox.Show("Successfully done");
}
我有第二个按钮
private void btn_go_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
//FileInfo fi = new FileInfo(dlg.FileName);
string filename = dlg.FileName;
Process.Start(filename);
}
这对我不起作用。
答案 0 :(得分:1)
Process.Start()
是文件的绝对路径, filename
就会打开图像。话虽如此,您在btn_go_Click
方法中的哪个位置实际上是打开对话框来获取文件名?如果您没有显示dlg.FileName
失败的对话框,则Process.Start()
会返回一个空字符串。
如果文件名需要来自上一个对话框,则不应创建新对话框;相反,改变
Process.Start(filename)
到
Process.Start(txt_picaddress.Text)
当然,您需要进行一些输入验证以确保路径正确(除非文本框是只读的)。
另外,考虑在string filename = dlg.FileName;
上设置一个断点,以确保它有正确的文件路径,如果它仍然不起作用。
在Windows Explorer
中打开并突出显示该文件:
string filename = txt_picaddress.Text;
ProcessStartInfo pInfo =
new ProcessStartInfo("explorer.exe", string.Format("/Select, {0}", filename));
Process.Start(pInfo);
答案 1 :(得分:0)
在第二个代码示例中,您创建了一个openFileDialog的新实例,您需要使用保存正确图像文件名的openFileDialog的前一个实例:
如果在窗口构造函数中创建第一个openFileDialog,则可以执行以下操作:
private void btn_go_Click(object sender, RoutedEventArgs e)
{
string filename = this.dlg.FileName;
Process.Start(filename);
}
希望这有帮助,根据您提供的代码,我可以这么说。
答案 2 :(得分:0)
如果您想使用文本框中的路径,则OpenFileDialog
中不需要btn_go_Click
:
private void btn_go_Click(object sender, RoutedEventArgs e)
{
string filename = txt_picaddress.Text;
Process.Start(filename);
}