1

正如标题所暗示的那样,我试图将流阅读器获取的文件发送到另一个类,以便该类可以从中提取信息。我曾尝试在表单中提取它,但这让人感到困惑,而且我确定这是一种糟糕的做法。任何人都可以提出一种方法吗?

这是标识文件的类..

namespace DistanceEstimatorFinal
{
    public partial class Form1 : Form


        private void openDataListToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "CSV files (*.csv)|*.csv|Text files ( *.txt)|*.txt |All files (*.*)|*.*";
            if (ofd.ShowDialog(this).Equals(DialogResult.OK))
            {
                Stream fileStream = ofd.OpenFile();

                using (StreamReader reader = new StreamReader(fileStream))
                {

                }
            }
        } 

现在我需要某种方式将它发送到这里......我看不出如何:[

namespace DistanceEstimatorFinal
{

    public class dataPoints
    {
        List<dataPoint> Points;
        public dataPoints( )
        {
            Points = new List<dataPoint>();
            TextReader tr = new StreamReader();
            string input;
            while ((input = tr.ReadLine()) != null)
            {
                string[] bits = input.Split(',');
                dataPoint a = new dataPoint(bits[0],bits[1],bits[2]);              
                Points.Add(a);  


            }

            tr.Close();
        }

        internal dataPoint getItem(int p)
        {
            if (p < Points.Count)
            {
                return Points[p];
            }
            else
                return null;
        }
    }

}

任何帮助将不胜感激

4

2 回答 2

5

我只需将文件的路径传递给您的班级,然后打开文件进行阅读。

if (ofd.ShowDialog(this).Equals(DialogResult.OK))
{
    var path = ofd.FileName;

    //Pass the path to the dataPoints class and open the file in that class.
}

您可以在类的构造函数中传递路径,也可以将路径作为参数传递给方法本身。

于 2012-11-26T22:47:27.663 回答
1

UI 的工作实际上只是找出需要处理的文件。

我会让正在执行实际处理的业务对象也创建 StreamReader。

如果您不遵循该方法,您的 UI 将负责清理它自己不使用的资源(StreamReader)。

此外,通过将处理与 UI 中的事件处理程序完全分开,如果将来有必要,您可以更轻松地在单独的线程上处理文件。

于 2012-11-26T22:47:06.680 回答