将datagridview行数据添加到另一个表单上的文本框中

时间:2012-05-02 09:43:03

标签: c# winforms datagridview

我有一个datagridview,用于在列中显示我的数据。 我想要完成的是,在选择一行并按下编辑按钮后,将打开一个新表单并拆分右侧文本框的行以更新数据。

datagridview行显示不同类型的数据:姓名,电子邮件,日期等......

任何想法? 提前致谢!

2 个答案:

答案 0 :(得分:2)

该网站解释了如何在表单之间发送数据,就像在数据网格中选择正确的单元格一样简单,将所有信息发送到右侧文本框。然后把它们送回去。 Data between forms

基础是创建一个可用于获取值的方法

    public string getTextBoxValue()
{
    return TextBox.Text;
}

然后你可以调用方法在表单之间传递数据,

this.Text = myForm2.getTextBoxValue();

然而,你将发送单元格的值,并将使textbox.text等于方法的返回 这是理论的一个基本例子,如果你只是不能回来寻求帮助并且用代码编辑病毒,那么你可以尝试自己使用它,但是只有在你试过之后你自己第一次

答案 1 :(得分:2)

您可以使用与DataGridView列对应的属性创建一个类,例如MyDataCollection。当您按下编辑按钮时,创建此类的新实例,用必要的数据填充它并将其作为参数传递给EditForm的构造函数。

public class MyDataCollection
{
    public string Name;
    public string Email;
    // -- 
}

以您的主要形式:

void btnEdit_Click(object sender, EventArgs e)
{
    // Create the MyDataCollection instance and fill it with data from the DataGridView
    MyDataCollection myData = new MyDataCollection();
    myData.Name = myDataGridView.CurrentRow.Cells["Name"].Value.ToString();
    myData.Email = myDataGridView.CurrentRow.Cells["Email"].Value.ToString();
    // --

    // Send the MyDataCollection instance to the EditForm
    formEdit = new formEdit(myData);
    formEdit.ShowDialog(this);
}

编辑表单应如下所示:

public partial class formEdit : Form
{
    // Define a MyDataCollection object to work with in **this** form
    MyDataCollection myData;

    public formEdit(MyDataCollection mdc)
    {
        InitializeComponent();

        // Get the MyDataCollection instance sent as parameter
        myData = mdc;
    }

    private void formEdit_Load(object sender, EventArgs e)
    {
        // and use it to show the data
        textbox1.Text = myData.Name;
        textbox2.Text = myData.Email;
        // --
    }
}

您还可以忘记MyDataCollection类,并将整个DataGridViewRow传递给formEdit的构造函数。