从按钮单击上的表单传递路径

时间:2014-09-04 09:10:39

标签: c#

我正在使用此代码生成所选文件的路径:

       private void LoadNewFile()
{
    OpenFileDialog ofd = new OpenFileDialog();
    string _xmlPath1 = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
    System.Windows.Forms.DialogResult dr = ofd.ShowDialog();
    if (dr == DialogResult.OK)
    {
        userSelectedFilePath = ofd.FileName;
    }
}

        private void tbFilePath_TextChanged(object sender, EventArgs e)
        {

        }

在我使用此代码传递数据之前:

 private void btn_compare_Click(object sender, EventArgs e)
        {
            string x1 = System.IO.File.ReadAllText(@"C:\Users", Encoding.UTF8);

我如何修改它而不是手动获取路径的x1,我需要它等于xmlPath1,所以字符串x1 = xmlPath1

2 个答案:

答案 0 :(得分:0)

只需将_xmlPath1更改为字段,即可从班级中的任何方法访问该字段。

示例:

public class MyClass
{
    protected String _xmlPath1;

    ' insert your methods here
}

如果您的方法不在同一个类中,则必须进一步扩大_xmlPath1的范围。

编辑:将VB.net语法更改为C#

答案 1 :(得分:0)

1)如果userSelectedFilePath是私有字段,您可以在btn_compare_Click中使用它 2)如果它是局部变量,则将其设为私有字段,然后参见1
3)使方法返回文件

private string LoadNewFile()
{
   OpenFileDialog ofd = new OpenFileDialog();
   string _xmlPath1 = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
   System.Windows.Forms.DialogResult dr = ofd.ShowDialog();
   if (dr == DialogResult.OK)
      return  ofd.FileName;
   else
      return null;

}

并使用它(您必须添加验证逻辑)

private void btn_compare_Click(object sender, EventArgs e)
{
        string x1 = System.IO.File.ReadAllText(LoadNewFile(), Encoding.UTF8);
}

选项3是最好的方法,因此您可以避免额外的字段并使btn_compare_Click独立于其余代码。
在这种情况下,您还应该给它一个更好的名称,如GetFileToRead()