从类访问datagridview中的数据



我读了很多关于这个问题的话题,但没有找到答案。我对此还很陌生,所以请耐心等待。

我正在尝试将数据网格视图中的值传递到列表中。然后在一个新的类中,我想创建访问该列表的som方法。问题是,当我传递datagridview时,它会返回没有内容和值的数据,这意味着我不能对它做任何事情

////测试////下的代码可以像我想要的那样工作。我创建了一个指定列表的实例,它正确地计算了行数,请参见屏幕截图。

public List<vertEl> getVertList = new List<vertEl>();
//Opens the file dialog and assigns file path to Textbox
OpenFileDialog browseButton = new OpenFileDialog();
private void browse_Click(object sender, EventArgs e)
{
browseButton.Filter = "Excel Files |*.xlsx;*.xls;*.xlsm;*.csv";
if (browseButton.ShowDialog() == DialogResult.OK)
{
//SOME CODE TO GET DATA FROM EXCEL AND SOME METHODS TO CALCULATE
//VALUES TO PASS TO THE TAB VERTIKALELEMENTER TAB IN MY DATAGRIDVIEW
//VERTIKALELEMENTER IS vertElementerDgv IN MY CODE
////TESTING////
GetVertElementasList TEST = new GetVertElementasList();
getVertList =  TEST.vertList(vertElementerDgv);
MessageBox.Show(getVertList.Count.ToString());

}
else return;
}

我现在想在一个单独的类中做这件事,并从该类调用一个方法来做同样的事情,但当我在下面的代码中尝试时,我不会得到与form1(公共分部类BridgeGeometry)中的代码相同的计数。它返回计数0。方法foo()被分配给窗体.中的按钮1

class GetKoord
{
public GetVertElementasList getList = new GetVertElementasList();
BridgGeometry obj = new BridgGeometry();
public void foo()
{
var TEST = getList.vertList(obj.vertElementerDgv);
//var TEST = obj.getVertList;
MessageBox.Show(TEST.Count.ToString());
}
}

我还试图直接从datagridview获取值,但当我从一个不是form1/BridgeGeometry类的类访问它时,里面什么都没有。

表单-屏幕截图

您可以运行一个循环,并将所选行的信息存储到一个公共var中,如下所示:

string itemOne = dataGridView1.SelectedRows[0].Cells[1].Value + string.Empty;
string itemTwo= dataGridView1.SelectedRows[0].Cells[2].Value + string.Empty;
string itemThree = dgMasterGridBun.SelectedRows[0].Cells[3].Value + string.Empty;

变量

public var varItemOne = itemOne;
public var varItemTwo = itemTwo;
public var varItemThree = itemThree;

基于链接,我成功地实现了这一点。也许不是最好的解决方案,但可行。我试着把注意力集中在数据绑定、列表绑定等方面,但由于带有输入值的类很乱,我现在放弃了。datagridview的输入值有些来自列表,有些来自其他datagridview。

MSDN论坛:从不同的类访问Form1控件

链接中给出了解释,所以我只会在我的程序中提供我是如何做到的。

如果我的GetKoord类是这样的:

public class GetKoord
{
private BridgGeometry bridgeGeometry;
public GetKoord(BridgGeometry form1)
{
bridgeGeometry = form1;
}
public List<vertElementerParam> getListvertElementer(List<vertElementerParam> theList)
{
//var vertElementerDgv = bridgeGeometry.vertElementerDgv;
GetVertElementasList getVertElementasList = new GetVertElementasList();
List<vertElementerParam> MyDgvListList = new List<vertElementerParam>();
MyDgvListList = getVertElementasList.vertList(bridgeGeometry.vertElementerDgv);
//MessageBox.Show(MyDgvListList.Count.ToString());
theList = MyDgvListList;
return theList;
}
}

然后我可以在按钮1中获得列表。点击如下,查看第一篇文章中的屏幕截图:

public List<vertElementerParam> getVertList = new List<vertElementerParam>();
private void button1_Click(object sender, EventArgs e)
{
GetKoord getKoord = new GetKoord(this);
List<vertElementerParam> testList = new List<vertElementerParam>();
testList = getKoord.getListvertElementer(getVertList);
MessageBox.Show(testList.Count.ToString());
}

最新更新