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

至少您的问题之一是:

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;
}

我还没有检查其余的代码。但这是首先要解决的问题。

我假设 new dataPoints() 将读取您感兴趣的任何数据。让构造函数加载数据不是标准做法。但是,您的代码暗示了意图。

于 2012-11-26T14:18:31.773 回答