0

緯度と標高のフォームボックスが空白に戻ってきた理由を誰かが理解できますか?私は何時間も探していましたが、理由がわかりません!

namespace DistanceEstimatorFinal
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            dataPoints mydataPoints = new dataPoints();
            dataPoint a = mydataPoints.getItem(0);
            latTextBox.Text = a.CurLatitude;
            longTextbox.Text = a.CurLongtitude;
            eleTextBox.Text = a.CurElevation;

        }
    }
}

上は私のフォームです

namespace DistanceEstimatorFinal
{
    public class dataPoints
    {
        List<dataPoint> Points;
        public void DataPoints()
        {
            Points = new List<dataPoint>();
            TextReader tr = new StreamReader("c:/users/tom/documents/visual studio 2010/Projects/DistanceCalculator3/DistanceCalculator3/TextFile1.txt");
            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;
        }
    }
}

これは、コンマで区切られたテキストファイルからポイントを描画する私のポイントクラスです。

namespace DistanceEstimatorFinal
{
    class dataPoint
    {
        private string latitude;
        private string longtitude;
        private string elevation;

        public dataPoint(string Latitude, string Longtitude, string Elevation)
        {

            // TODO: Complete member initialization
            this.latitude = Latitude;
            this.longtitude = Longtitude;
            this.elevation = Elevation;

        }

        public string CurLongtitude { get { return this.longtitude; } }
        public string CurLatitude { get { return this.latitude; } }
        public string CurElevation { get { return this.elevation; } }

    }
}

上記は、個々のポイントを保持して送り返すクラスです

4

3 に答える 3

3

問題の少なくとも1つは次のとおりです。

namespace DistanceEstimatorFinal
{
    public class dataPoints
    {
        List<dataPoint> Points;
        public void DataPoints()
        {
        ...

クラスが呼び出されdataPointsましたが、コンストラクターを作成しようとしましたが、呼び出されましたDataPoints(ケースに注意してください)。dataPointsこのコードは、オブジェクトを作成するときに実行されません。

シャドウウィザードウィザードが指摘しているように、コンストラクターの戻り型を指定することはできません。あなたのコンパイラは、あなたがケースに一致すればそれをあなたに言うでしょう。

于 2012-11-26T14:16:47.710 に答える
2

C#では大文字と小文字が区別され、コンストラクター用の特別な構文があります。現状では、「コンストラクター」として使用しているメソッドは実行されません。

正しいコードは次のとおりです。

public class dataPoints
{
    List<dataPoint> Points;
    public dataPoints()
    {
        //constructor code here...
    }
}

ご覧のとおり、コンストラクターはリターン型も持つことができません。

于 2012-11-26T14:16:48.787 に答える
2

textBox1_TextChangedエンドユーザーがテキストボックスを変更した場合にのみ呼び出されます。コードは、テキストボックスを初期化することを示しているようです。

OnLoadメソッドをオーバーライドしてから、テキストボックスを設定することをお勧めします。何かのようなもの:

protected override OnLoad()
{
        dataPoints mydataPoints = new dataPoints();
        dataPoint a = mydataPoints.getItem(0);
        latTextBox.Text = a.CurLatitude;
        longTextbox.Text = a.CurLongtitude;
        eleTextBox.Text = a.CurElevation;
}

残りのコードはチェックアウトしていません。しかし、これは最初に取り組むべき問題です。

新しいdataPoints()は、関心のあるデータをすべて読み取ると想定しています。コンストラクターをデータにロードすることは、標準的な方法ではありません。ただし、コードは意図を暗示しています。

于 2012-11-26T14:18:31.773 に答える