私はGetKoordと呼ばれるクラスを持っています。そこからDataGridViewを読み込んでリストに入れたいと思っています。私は最初に再帰的なstackoverflowexceptionでエラーが発生したので、私が作ったクラスvertElを作った。DataGridviewからのリストはSystem.InvalidCastExceptionを返します
私がパブリックな部分クラスにいるとき、このコードの問題は、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; }
}
}
どのようなエラーが表示されますか? – kritikaTalwar
[スクリーンショット](https://content.screencast.com/users/fjaosl/folders/Jing/media/62d7ba82-711a-46ea-b957-db99ddcc85a0/2017-02-023030.png) スクリーンショットを参照してください。それはInvalidCastExceptionと言います。 編集:私はheln1をコメントアウトし、heln2コードが動作する場合: // heln1 =(ダブル)VertElementer.Rows [I] .Cells [5] .Valueの、 // heln2 =(ダブル)VertElementer.Rows [i] .Cells [6] .Value – Grohl