【问题标题】:How to display FileName in a label如何在标签中显示文件名
【发布时间】:2017-09-22 10:03:16
【问题描述】:

我正在尝试做一个“保存文件”浏览器。我希望用户选择的文件名输入显示在标签而不是文本框中。我为我的“打开文件”浏览器做了一个类似的操作,效果很好。请告诉我哪里出错了,谢谢!

private void button5_Click(object sender, EventArgs e)
    {
        SaveFileDialog saveFileDialog1 = new SaveFileDialog();
        saveFileDialog1.Title = "Save File";
        saveFileDialog1.Filter = "Text files (*.txt)|*.txt| CONF(*.conf)|*.conf|All files (*.*)|*.*";
        saveFileDialog1.FilterIndex = 1;
        saveFileDialog1.ShowDialog();

        if (saveFileDialog1.FileName != "")
        {
            System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile();

            switch (saveFileDialog1.FilterIndex)
            {
                case 1:
                    saveFileDialog1.FileName = saveFileDialog1.FileName + ".txt";
                    break;
                case 2:
                    saveFileDialog1.FileName = saveFileDialog1.FileName + ".conf";
                    break;
            }

            fs.Close();
        }
    }

private void label2_Click(object sender, EventArgs e)
    {
        this.label2.Text = saveFileDialog1.FileName;
    }

【问题讨论】:

  • 您正试图通过单击来设置标签的值?
  • 你不应该在button5_Click 中写this.label2.Text = saveFileDialog1.FileName; 吗?
  • FileName 返回带有扩展名的完整路径,您是否故意添加 另一个 扩展名?例如。如果选择了1.txt,您想使用1.txt.txt 文件,对吗?至于问题,您无法以其他方法访问局部变量。为此将其设为private 字段。虽然我同意@ChetanRanpariya,但您更有可能希望在按钮单击事件处理程序中设置标签文本。

标签: c# winforms label savefiledialog


【解决方案1】:

下面的三行代码显示了单击 label2 时发生的情况。所以你为更新标签所做的事情是正确的:this.label2.Text = saveFileDialog1.FileName; .问题是当您更新此标签时,您已经使用您的代码制作了它,因此在用户单击标签后您会更新标签文本。

最简单的方法是在设计视图中双击该项目,它会自动将您带到程序运行时单击该项目时触发的代码。

例如,您在设计器视图中有一个按钮,如果您在 VS 的设计器视图中双击该按钮,它将跳转到代码块,这是单击按钮时将运行的代码块。

【讨论】:

  • 谢谢,那次我有点迷失了。
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多