【发布时间】:2012-05-02 09:43:02
【问题描述】:
我有一个数据网格视图,可以在列中显示我的数据。 我想要完成的是,在选择一行并按下编辑按钮后,将打开一个新表单并将该行拆分为正确的文本框以更新数据。
datagridview 行显示不同类型的数据:姓名、电子邮件、日期等...
有什么想法吗? 提前致谢!
【问题讨论】:
-
您的问题到底是什么?你已经尝试过了吗?
标签: c# winforms datagridview
我有一个数据网格视图,可以在列中显示我的数据。 我想要完成的是,在选择一行并按下编辑按钮后,将打开一个新表单并将该行拆分为正确的文本框以更新数据。
datagridview 行显示不同类型的数据:姓名、电子邮件、日期等...
有什么想法吗? 提前致谢!
【问题讨论】:
标签: c# winforms datagridview
这个网站解释了如何在表单之间发送数据,就像在数据网格中选择正确的单元格一样简单,将信息发送到正确的文本框,对于所有这些。然后将它们送回。 Data between forms
基础是创建一个可以用来获取值的方法,
public string getTextBoxValue()
{
return TextBox.Text;
}
那么你可以只调用方法在表单之间传递数据,
this.Text = myForm2.getTextBoxValue();
但是,您将发送单元格的值,并使 textbox.text 等于方法的返回 这是该理论的一个基本示例,请自己尝试一下,使其按您想要的方式工作,如果您无法做到,请返回并寻求帮助并错误地编辑代码,但只有在您尝试过之后先做自己
【讨论】:
您可以创建一个类,例如 MyDataCollection,其属性对应于您的 DataGridView 列。当你按下 Edit 按钮时,创建这个类的一个新实例,用必要的数据填充它,并将它作为参数传递给 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 的构造函数。
【讨论】: