从文本框打开图像位置

时间:2014-08-19 19:24:03

标签: c# wpf

我有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);
}

这对我不起作用。

3 个答案:

答案 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);
}