如何从 c# Windows 窗体中文本框的文本内容更新 datagridview 的列
Posted
技术标签:
【中文标题】如何从 c# Windows 窗体中文本框的文本内容更新 datagridview 的列【英文标题】:How to update the column of datagridview from the text contents of textbox in c# Windows form 【发布时间】:2011-01-29 06:07:57 【问题描述】:我有一个包含表格内容的数据网格视图。在那我有一个备注栏,它将是 1-2 行。当我点击备注栏时,我想打开另一个包含文本框的表单。我已使用表格适配器将文本框与表格链接起来。现在,当我用文本框关闭表单时,我想在 datagridview 列中显示它。请帮帮我
【问题讨论】:
我猜这是您之前提出的问题的后半部分? ***.com/questions/2459465 再次查看您的问题 - 您是否将数据从第二个表单保存到数据库,并希望在该表单关闭后刷新您的 DataGridView?如果是这种情况,那么您可以执行类似于我的回答的操作,但是在您作为委托传递的方法中,您可以简单地刷新 DataGridView 数据源,以便它返回数据库。 【参考方案1】:我过去这样做的方法是将 Action 委托传递给第二个表单,该表单引用第一个表单中的方法。
您传入的方法包含更新 DataGridView 的逻辑。
然后在您的第二个表单关闭事件中,您调用此委托(在检查它不为空之后)从您的文本框中传递值。
下面是一些快速原型代码来展示如何做到这一点。我的 Form1 方法只显示一个消息框,但您可以轻松更改它以更新 DataGridView 数据源。
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void button1_Click(object sender, EventArgs e)
Form2 form = new Form2();
Action<string> showMessage = ShowMessage;
form.ClosingMethod(showMessage);
form.Show();
private void ShowMessage(string message)
MessageBox.Show(message);
public partial class Form2 : Form
private Action<string> _showMessage;
public Form2()
InitializeComponent();
public void ClosingMethod(Action<string> showMessage)
_showMessage = showMessage;
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
if (_showMessage != null)
_showMessage("hippo");
编辑
我突然想到,对代理 _showMessage("hippo");
的调用被阻塞了。
在委托完成之前,您的表单不会关闭 - 可能需要很长时间。在我的消息框示例中,在单击“确定”按钮之前,表单不会关闭。
要解决这个问题,您可以异步调用您的委托,如下所示:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
if (_showMessage != null)
_showMessage.BeginInvoke("hippo", null, null);
【讨论】:
【参考方案2】:如果您的 DataGridView 使用 TableAdapter 附加到表格,您必须自己更新单元格,然后调用 update 将数据推送回表格,或者您可以从对话框更新表格,然后刷新 DataGridView。
【讨论】:
以上是关于如何从 c# Windows 窗体中文本框的文本内容更新 datagridview 的列的主要内容,如果未能解决你的问题,请参考以下文章
pywin32 怎么获取 windows 的窗体内文本框的内容
pywin32 怎么获取 windows 的窗体内文本框的内容