从另一个类中保存的变量添加项目到dgv(C#winForms)

时间:2013-08-22 12:14:14

标签: c# winforms datagridview

我相对较新的编程和仍在学习。我刚刚制作了一个计算器,然后我想到了我想将两个输入数字(value1,value2)和结果保存在另一个winform的datagridview中。 首先我添加了一个按钮(bSave)来保存它。 我的第一次尝试是: dgvSavedResults.Rows.Add(tbValue1.Text,tbValue2.Text,tbResult.Text);“并且工作正常。

我的下一次尝试是将所有内容保存在另一个类中:

public class Information
{
    private string value1;
    private string value2;
    private string result;

    public string Value1
    {
        get { return value1; }
        set { value1 = value; }
    }

    public string Value2
    {
        get { return value2; }
        set { value2 = value; }
    }

    public string Result
    {
        get { return result; }
        set { result = value; }
    }
}

在计算器表单中,当我点击保存按钮时,它看起来像这样:

    private void bSave_Click(object sender, EventArgs e)
    {
        Information info = new Information();
        info.Value1 = tbTal1.Text;
        info.Value2 = tbTal2.Text;
        info.Result = tbResultat.Text;                        
    }

我想我需要在Information-class中使用数据表和循环。 但我真的不知道如何使这项工作。我用Google搜索了但我找不到我理解的东西。我在正确的轨道上吗?或者我的想法完全错了? 如果有人可以花时间向我解释该做什么,也许可以告诉我一个如何做的例子真的很感激。感谢

1 个答案:

答案 0 :(得分:0)

您可以获得结果列表:

BindingList<Information> resultsList = new BindingList<Information>();

使用BindingSource将其绑定到DataGridView:

BindingSource resultsBindingSource = new BindingSource();

this.resultsBindingSource.DataSource = resultsList;
this.dgvSavedResults.DataSource = this.resultsBindingSource ;

然后:

private void bSave_Click(object sender, EventArgs e)
    {
        Information info = new Information();
        info.Value1 = tbTal1.Text;
        info.Value2 = tbTal2.Text;
        info.Result = tbResultat.Text;     
        resultsList.Add(info);                   
    }

已经完成了。

此外,根据您要添加列的方式,您可以手动执行,也可以从Information类的公共属性自动生成它:

dgvSavedResults.AutoGenerateColumns=true;

编辑:

要正确反映datagridview的变化,最好使用BindingList而不是List