2

我有一个 C# 桌面应用程序。在这个应用程序中,我有一个显示不同消息的表单。我有一条消息说:“输出文件是在:C:\Work\result.txt 中生成的”。如何将此文件路径显示为链接以及何时显示带有此消息的表单以将路径视为链接以及当用户单击链接以打开指定的路径/文件时?

我试过了 :

The output  file was generated in : <a href=/" C:\Work\result.txt/">C:\Work\result.txt</a>

但不起作用。

谢谢 !

4

3 回答 3

2

您可以有一个 on-onclick 事件,然后您可以使用以下代码打开文件。

System.Diagnostics.Process.Start(@"C:\Work\result.txt"); //or like
System.Diagnostics.Process.Start(@"C:\Work\result.docx");

在这里,该文件必须有默认程序。然后只有 shell 会运行从注册表中读取它的相关程序,就像在资源管理器中通常双击一样。

于 2013-06-20T06:58:02.753 回答
0

MessageBox.Show() 方法获取对话框的标题、文本、图标、按钮和默认按钮。但是 .NET Framework 文档中没有提到任何关于向 MessageBox 添加链接的内容

但是,您可以通过创建一个继承自 System.Windows.Forms.Form 的新类并添加一个按钮(或更多,如果您愿意)、一个图标、一个标签和一个 LinkBut​​ton 来实现您想要的效果。然后使用 Form 类的 ShowDialog() 方法以模态形式显示消息框。您还可以创建一个名为 MyErrorBox 的类(C# 2 中的静态类或 C# 1 中的静态类),该类仅包含一个名为 Show() 的静态方法,该方法创建一个表单、添加所需的控件并以模式模式显示该表单。最后一种方法的演示如下所示。然后你可以随时随地使用这个类!

using System;
using System.Windows.Forms;
using System.Drawing;

namespace MessageBoxes{
public sealed class MyErrorBox{

private MyErrorBox(){}
private static Form frm;
private static string detailsStore;
private static TextBox txt;

public static DialogResult Show(string caption, string text, string details, Icon icon){

    frm = new Form(); frm.Size = new Size(510, 195);
    frm.Text = caption; frm.ShowInTaskbar = false; frm.ControlBox = false;
    frm.FormBorderStyle = FormBorderStyle.FixedDialog;
    PictureBox icon1 = new PictureBox(); icon1.Location = new Point(8,16);
    icon1.Size = new Size(icon.Width, icon.Height);
    icon1.Image = icon.ToBitmap();
    frm.Controls.Add(icon1);
    Label lbl = new Label(); lbl.Text = text; lbl.Location = new Point(88,8);
    lbl.Size = new Size(400,88); frm.Controls.Add(lbl);
    LinkLabel btn1 = new LinkLabel(); btn1.Text = "View Details";
    btn1.Size = new Size(72,23); btn1.Location = new Point(416,96);
    btn1.Click += new EventHandler(btn1_Click); frm.Controls.Add(btn1);
    //Ofcourse you can add more buttons than just the ok with more DialogResults
    Button btn2 = new Button(); btn2.Text = "&Ok";
    btn2.Size = new Size(72,23); btn2.Location = new Point(224,130);
    btn2.Anchor = AnchorStyles.Bottom; frm.Controls.Add(btn2);
    frm.AcceptButton = btn2; btn2.Click += new EventHandler(btn2_Click);
    btn2.DialogResult = DialogResult.OK; detailsStore = details;
    return frm.ShowDialog();

 }

private static void btn1_Click(object sender, EventArgs e) {

    frm.Size = new Size(510,320);
    txt = new TextBox(); txt.Multiline = true;
    txt.ScrollBars = ScrollBars.Both; txt.Text = detailsStore;
    txt.Size = new Size(488,128); txt.Location = new Point(8,120);
    txt.ReadOnly = true; frm.Controls.Add(txt);
    LinkLabel lnk = (LinkLabel)(sender); lnk.Text = "Hide Details";
    lnk.Click -= new EventHandler(btn1_Click);
    lnk.Click += new EventHandler(btn1_ReClick);

}

private static void btn2_Click(object sender, EventArgs e) {

    frm.Close();

}

private static void btn1_ReClick(object sender, EventArgs e) {

    frm.Controls.Remove(txt); frm.Size = new Size(510, 195);
    LinkLabel lnk = (LinkLabel)(sender); lnk.Text = "View Details";
    lnk.Click -= new EventHandler(btn1_ReClick);
    lnk.Click += new EventHandler(btn1_Click);

   }

  }
 }
于 2013-06-20T09:12:01.220 回答
0

没有标准的 MessageBox 功能可以通过链接标签执行此操作。我建议您使用是/否消息框按钮,然后从选择的选项中应用事件

像这样的东西:

if (MessageBox.Show(
    "The file is saved at the following link: link here", "Success", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk
) == DialogResult.Yes)
{
System.Diagnostics.Process.Start(@"C:\TestLocation\SavedFiles");
}
于 2018-06-21T07:29:47.073 回答