如何从 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 的窗体内文本框的内容

c# windows窗体中的文本框

如何从文本框(windows窗体)检查主键是不是存在于我的数据库中,c#

将 Windows 窗体列表框保存到文本文件 C#

C#中Windows窗体工具栏