1

openButton から取得したパス名をコンストラクターに送信して、その中の情報を使用できるようにしようとしています。誰でもこれを行う方法を見ることができますか?

namespace GPSCalculator
{
    public partial class Form1 : Form
    {
       private String[] items;
       int count = 0;
       string FileName;
       public Form1()
        {
            InitializeComponent();
            List<float> inputList = new List<float>();
            TextReader tr = new StreamReader(FileName);
            String input = Convert.ToString(tr.ReadToEnd());
            items = input.Split(',');

        }
private void openToolStripMenuItem_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))
            {
                var FileName = (ofd.FileName);
            }
        }
    }
}
4

2 に答える 2

0

できません。フォーム上のボタンは独自のコンストラクターを呼び出すことができないため、コンストラクター内の操作の一部を別のメソッドに移動する必要があります。

namespace GPSCalculator
{
    public partial class Form1 : Form
    {
        private string[] items;
        private int count = 0;
        private string fileName;

        public Form1()
        {
            InitializeComponent();
        }

        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog();
            ofd.Filter = "Csv Files (*.csv)|*.csv|Text files (*.txt)|*.txt|All files (*.*)|*.*";
            if (ofd.ShowDialog(this).Equals(DialogResult.OK))
            {
                // I've changed this to refer to the field and removed un-necessary parenthesis
                this.fileName = ofd.FileName;
            }
        }

        private void ReadFileContents()
        {
            List<float> inputList = new List<float>(); // This doesn't get used?!

            // StreamReader is IDisposable so it should be used in a using statement
            using(TextReader tr = new StreamReader(this.fileName))
            {
                string input = Convert.ToString(tr.ReadToEnd());
                this.items = input.Split(',');
            }
        }
    }
}
于 2012-11-28T16:03:07.697 に答える
0
       //add filename to the constructor
       public Form1(string filename)
        {
            InitializeComponent();
            List<float> inputList = new List<float>();
            //use the filename from the constructor to open the StreamReader
            TextReader tr = new StreamReader(filename);
            //set your FileName filename passed in
            FileName = filename;
            String input = Convert.ToString(tr.ReadToEnd());
            items = input.Split(',');

        }
于 2012-11-28T16:01:12.293 に答える