【发布时间】:2017-06-19 11:32:51
【问题描述】:
我有一个名为 GetKoord 的类,我想从中读取数据网格视图并将其放入列表中。我创建了一个类 vertEl,因为我一开始遇到递归 stackoverflowexception 错误。
当我在我的公共部分类中尝试从 vertElementerDgv 创建一个列表时,此代码出现了问题。我的班级中添加列表项的循环无法正常工作并给出异常。
感谢我能得到的所有帮助!如果缺少某些信息,请告诉我,我会尽力提供。
GetKoord getKoord = new GetKoord();
//Opens the file dialog and assigns file path to Textbox
OpenFileDialog browseButton = new OpenFileDialog();
private void browse_Click(object sender, EventArgs e)
{
DGV = nylpDgv;
browseButton.Filter = "Excel Files |*.xlsx;*.xls;*.xlsm;*.csv";
if (browseButton.ShowDialog() == DialogResult.OK)
{
ExcelPath.Text = browseButton.FileName;
fileExcel = ExcelPath.Text;
//SetAttributeValue(ExcelPath, fileExcel);
//nylp();
/*
////IMPORTERER 10TAB-DATA FRA EXCEL TIL DATAGRIDVIEW////
tenTabLine.fileExcel = fileExcel;
tenTabLine.tenTab(tenTabDgv);
*/
////IMPORTERER NYLPDATA TIL DATAGRIDVIEW////
nylpLine.fileExcel = fileExcel;
nylpLine.nylpData(nylpDgv);
////TAR DATA I NYLPDGV DATAGRIDVIEW OG BEREGNER VERTIKALE ELEMENTER////
vertElementer.vertBueDGV(nylpDgv, vertElementerDgv);
////HENTER KOORDINATER////
var TEST = getKoord.vertList(vertElementerDgv); //THIS IS CAUSING ERROR
MessageBox.Show(TEST[5].elNr.ToString());
}
else return;
}
GetKoord 类和 vertEl 类如下:
class GetKoord
{
List<vertEl> vertTEST = new List<vertEl>();
public List<vertEl> vertList(DataGridView VertElementer)
{
for (int i = 0; i<VertElementer.Rows.Count - 1; i++)
{
vertTEST.Add(new vertEl
{
elNr = (int)VertElementer.Rows[i].Cells[0].Value,
p1 = (double)VertElementer.Rows[i].Cells[1].Value,
p2 = (double)VertElementer.Rows[i].Cells[2].Value,
z1 = (double)VertElementer.Rows[i].Cells[3].Value,
z2 = (double)VertElementer.Rows[i].Cells[4].Value,
heln1 = (double)VertElementer.Rows[i].Cells[5].Value,
heln2 = (double)VertElementer.Rows[i].Cells[6].Value
});
}
return vertTEST;
}
/*
public double zKoord(double pNr)
{
// zKoord() =
return zKoord(pNr);
}
*/
}
class vertEl
{
private int _elNr;
private double _p1;
private double _p2;
private double _z1;
private double _z2;
private double _nylpRad;
private double _heln1;
private double _heln2;
public int elNr
{
get { return _elNr; }
set { _elNr = value; }
}
public double p1
{
get { return _p1; }
set { _p1 = value; }
}
public double p2
{
get { return _p2; }
set { _p2 = value; }
}
public double z1
{
get { return _z1; }
set { _z1 = value; }
}
public double z2
{
get { return _z2; }
set { _z2 = value; }
}
public double nylpRad
{
get { return _nylpRad; }
set { _nylpRad = value; }
}
public double heln1
{
get { return _heln1; }
set { _heln1 = value; }
}
public double heln2
{
get { return _heln2; }
set { _heln2 = value; }
}
}
【问题讨论】:
-
你遇到了什么错误?
-
Screenshot 见截图。它说 InvalidCastException。编辑:如果我注释掉 heln1 和 heln2 代码有效: //heln1 = (double)VertElementer.Rows[i].Cells[5].Value, //heln2 = (double)VertElementer.Rows[i].Cells[ 6].值
标签: c# class for-loop datagridview