用DataGridView信息填充文本框
本文关键字:文本 填充 信息 DataGridView | 更新日期: 2023-09-27 18:08:29
我试图通过表单更新数据库信息(在WinForms)。DataGridView在Form1中显示数据库信息(其中还包含一个打开Form2(更新表单)的按钮)。要更新信息,我必须在数据网格中选择要更新的行,然后单击按钮(打开Form2)。当Update Form打开时,其中的文本框应该填充DataGridRows信息。现在这里是我被卡住的地方,文本框没有被填充(没有错误)。我做错了什么?
下面是我使用的代码: MainForm getMainForm = new MainForm();
private void EditMemberForm_Load(object sender, EventArgs e)
{
DataGridViewCell cell = null;
foreach (DataGridViewCell selectedCell in getMainForm.MembersGridView.SelectedCells)
{
cell = selectedCell;
break;
}
if (cell != null)
{
DataGridViewRow row = cell.OwningRow;
EditFirstNameTextBox.Text = row.Cells["FirstNameColumn"].Value.ToString();
EditLastNameTextBox.Text = row.Cells["LastNameColumn"].Value.ToString();
EditPersonalIdTextBox.Text = row.Cells["PersonalIdColumn"].Value.ToString();
EditCityComboBox.Text = row.Cells["CityColumn"].Value.ToString();
EditPhoneNumberTextBox.Text = row.Cells["PhoneNumberColumn"].Value.ToString();
}
}
MainForm getMainForm = new MainForm();
问题是您正在创建新的主表单,并尝试从新创建的主表单中获得选定行。
创建EditMemberForm
时,可以将值作为参数传递给EditMemberForm
不是创建一个新的MainForm,而是在单击按钮时将您选择的对象从MainForm传递给Form2…
示例:
private void Form2Button_Click(object sender, EventArgs e){
Form f=new Form2(dataGridView.SelectedRow);
f.show();
}
在Form2构造函数中:
object myRow;
public Form2(object myRow){
this.myRow=myRow
}
我明白了。
我在打开UpdateForm(来自MainForm)的按钮中使用了这段代码。
EditMemberForm getEditMemberForm = new EditMemberForm();
DataGridViewCell cell = null;
foreach (DataGridViewCell selectedCell in MembersGridView.SelectedCells)
{
cell = selectedCell;
break;
}
if (cell != null)
{
DataGridViewRow row = cell.OwningRow;
getEditMemberForm.EditFirstNameTextBox.Text = row.Cells["FirstNameColumn"].Value.ToString();
getEditMemberForm.EditLastNameTextBox.Text = row.Cells["LastNameColumn"].Value.ToString();
getEditMemberForm.EditPersonalIdTextBox.Text = row.Cells["PersonalIdColumn"].Value.ToString();
getEditMemberForm.EditCityComboBox.Text = row.Cells["CityColumn"].Value.ToString();
getEditMemberForm.EditPhoneNumberTextBox.Text = row.Cells["PhoneNumberColumn"].Value.ToString();
}
getEditMemberForm.ShowDialog();
这工作完美。谢谢那些试图帮助我的人,干杯:)!
我最近遇到了一个类似的问题,我是这样解决的。
中Form1:
public void NotifyMe(string s, string s2, string s3, string s4, string s5)
{
if (textBox1.InvokeRequired)
{
textBox1.Invoke((MethodInvoker)delegate { textBox1.Text = s; });
}
else
{
textBox1.Text = s;
}
//...
}
从Form1打开Form2:
using (Form2 form = new Form2())
{
// passing this in ShowDialog will set the .Owner
// property of the child form
form.ShowDialog(this);
}
Form2:
parent = (Form1)this.Owner;
parent.NotifyMe(s, s2, s3, s4, s5);