从文本框打开图像位置

本文关键字:图像 位置 文本 | 更新日期: 2023-09-27 18:18:48

我有openfiledialog读取用户图像地址与文件信息,并加载到文本框

我想有另一个按钮,以打开图像地址(已保存在文本框)

如何在WPF编码此按钮?我知道我应该用过程。开始但不知道!

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

这对我不起作用。

从文本框打开图像位置

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);

在第二个代码示例中,您创建了openFileDialog的新实例,您需要使用先前的openFileDialog实例,该实例保存了正确的图像文件名:

如果你在窗口构造函数中创建第一个openFileDialog,你可以这样做:

private void btn_go_Click(object sender, RoutedEventArgs e)
{  
    string filename = this.dlg.FileName; 
    Process.Start(filename);
}

希望这对你有帮助,这是我能说给你提供的代码

如果你想在文本框中使用路径,则不需要在btn_go_Click中添加OpenFileDialog:

private void btn_go_Click(object sender, RoutedEventArgs e)
{
    string filename = txt_picaddress.Text; 
    Process.Start(filename);
}