来自另一个类的数据无法放入datagridview

时间:2017-08-21 08:40:29

标签: c# visual-studio oop

美好的一天。我已将数据变量从一个类传递到另一个类,以放入主窗体中的datagridview。我在每种情况下都放了一些消息框,以便知道它访问了所述函数并且数据显然已通过。但是当我运行该程序时。该表并没有将数据放入其中。

以下是传递数据时的代码

if (txtCode1.ElementAt(intCtr + 1).Equals(val4)) {
   MessageBox.Show("Lol");
   Compilourdes_GUI cmp = new Compilourdes_GUI();
   cmp.AddtotblLexeme(val2, val2);
   break;
}

这是AddtotblLexeme的代码

public void AddtotblLexeme(string lexeme, string token) {
   MessageBox.Show(lexeme+" "+token);
   tblLexeme.Rows.Add(lexeme , token); //adding tokens and lexeme to the table
}

我制作DataTable的代码

private void Start()
{
    tbl1.AutoGenerateColumns = true;
    tbl1.DataSource = null;
    tbl1.Rows.Clear();

    InitTable();

    string txtCode1 = txtCode.Text;
    LexicalAnalyzer lex = new LexicalAnalyzer(txtCode1);
    lex.StartLex();
    tbl1.DataSource = tblLexeme;
}

public void InitTable()
{
    tblLexeme = new DataTable();
    tblLexeme.Columns.Add("Lexeme", typeof(string));
    tblLexeme.Columns.Add("Token", typeof(string));
}

DataTable tblLexeme = new DataTable();

这是输出the "TEST" word/s should be inside the table的图像。 " TEST" word / s应该在表格内,但正如你所看到的,它并没有被放入。

1 个答案:

答案 0 :(得分:1)

好的,我想我理解你的问题。如果您直接在设计器中添加了列,我的猜测是您添加了未绑定的列。如果是这样,那么DataGridView无法匹配您要添加到表中行的行。要解决此问题,请从DatagridView中删除列。然后在设置DataSource = tblLexeme之前,确保DataGridView具有属性AutoGenerateColumns = true。现在有两件事情自动发生:首先,DataGridView从DataTable中获取列;第二,在向DataTable添加新行时,它应该在DataGridView中自动显示。

在AddtotblLexeme中,出于测试目的,您可以添加,代替您的Rows.Add():

DataRow nR = tblLexeme.NewRow();
nR[0] = lexeme;
nR[1] = token;
tblLexeme.Rows.Add(nR);

然后在调试器中检查nR是否有一个包含2列的ItemArray。