0

我已经从这里尝试了一些解决方案..没有成功!

这是我的代码和下面的错误消息,

SQLite.SQLiteConnection connection = new SQLite.SQLiteConnection(dbPath);

            using (var db = new SQLite.SQLiteConnection(dbPath)) 
                {

                    int i = 0;
                    var d = from x in db.Table<stations>() select x; 
                    foreach (var sd in d) 
                    {
                        pushpin[] Tanke = new pushpin[i];
                        Tanke[i].Titel = sd.name.ToString(); //IndexOutOfRangeException (see below)
                        Tanke[i].Text = sd.brand.ToString();
                        Tanke[i].longitude = sd.longitude;
                        Tanke[i].latitude = sd.latitude;

                        MapLayer.SetPosition(Tanke[i], new Location(Tanke[i].latitude, Tanke[i].longitude));
                        pinLayer.Children.Add(Tanke[i]);
                        ToolTipService.SetToolTip(Tanke[i], Tanke[i].Titel);

                        i++;
                    } 
                    db.Dispose();
                    db.Close();
                } 

在此处输入图像描述

4

3 回答 3

3

当 i 为零时,您正在创建一个零元素数组。

pushpin[] Tanke = new pushpin[i];
Tanke[i].Titel = sd.name.ToString();

然后使用 [0] 访问第一个元素。那是行不通的。零元素数组中没有元素。

于 2013-10-29T10:25:52.510 回答
0

问题是您如何创建pushpin. 看起来您不需要数组,所以请改为:

SQLite.SQLiteConnection 连接 = 新 SQLite.SQLiteConnection(dbPath);

using (var db = new SQLite.SQLiteConnection(dbPath)) 
    {
        var d = from x in db.Table<stations>() select x; 
        foreach (var sd in d) 
        {
            var tmp = new pushpin();
            tmp.Titel = sd.name.ToString(); //IndexOutOfRangeException (see below)
            tmp.Text = sd.brand.ToString();
            tmp.longitude = sd.longitude;
            tmp.latitude = sd.latitude;

            MapLayer.SetPosition(tmp, new Location(tmp.latitude, tmp.longitude));
            pinLayer.Children.Add(tmp);
            ToolTipService.SetToolTip(tmp, tmp.Titel);
        } 
        db.Dispose();
        db.Close();
    } 
于 2013-10-29T10:29:15.463 回答
0

当您跨过 foreach 中的条目并每次创建一个零元素数组( i = 0 )时,您无法保存某些内容,因为 [0] 元素不存在

于 2013-10-29T10:28:43.120 回答