将 DataGridView 值复制到 TextBox

Posted

技术标签:

【中文标题】将 DataGridView 值复制到 TextBox【英文标题】:Copy DataGridView values to TextBox 【发布时间】:2016-01-21 10:06:39 【问题描述】:

我试图得到这个问题的答案,但到目前为止,没有任何帮助能够做我想做的事情。

我有这段代码,用于查看选定的行并将其列输出到相应的文本框中。

 private void DataGridView01_SelectionChanged(object sender, EventArgs e)
 
    if (DataGridView01.SelectedRows.Count > 0)
    
       personIDTextBox.Text = DataGridView01.SelectedRows[0].Cells[0].Value.ToString();
       comboBox1.Text = DataGridView01.SelectedRows[0].Cells[1].Value.ToString();
       Txt_FirstName.Text = DataGridView01.SelectedRows[0].Cells[2].Value.ToString();
       mIDDLENAMETextBox.Text = DataGridView01.SelectedRows[0].Cells[3].Value.ToString();
       sURNAMETextBox.Text = DataGridView01.SelectedRows[0].Cells[4].Value.ToString();
       cITYTextBox.Text = DataGridView01.SelectedRows[0].Cells[5].Value.ToString();
       eMAILTextBox.Text = DataGridView01.SelectedRows[0].Cells[6].Value.ToString();
     
  

当我启动程序时,我没有收到任何错误,但它不会将数据输出到文本框中。有谁知道我做错了什么?

【问题讨论】:

您确实选择了一行,对吗? - 另外:您的代码中似乎有一对多的卷曲;你确定它是写的吗?? 你是不是下断点看看DataGridView01.SelectedRows.Count的值是多少? @TaW 是的,我确实选择了一行....... /跨度> 这听起来很可疑!没有编译器抱怨怎么可能……?第一个断点应该在 if @TaW 我不确定,我对 C# 和 Visual Studio 还很陌生。额外的卷曲只是复制和粘贴错误。我不知道我做错了什么。我读过的所有内容都表明此代码应该可以工作。断点在 if 上。 【参考方案1】:

联播活动:

这是你需要学习在 VS 中编码的最基本的东西。简而言之,它意味着事件名称,这里DataGridView01_SelectionChanged 连接到事件。为此,可以使用代码或将其插入属性选项卡的事件窗格的正确插槽中。选择DataGridView,打开事件窗格(带有闪光灯的那个)并找到SelectionChanged 事件!在这里插入事件的名称,你就完成了。

(我只安装了德文版的VS..)

结果反映在 form_designer.cs 文件中,与双击该点然后填写生成的代码存根相同(相反)。

控件有很多事件;一个是 default 事件,它可以通过在设计器中双击控件本身来生成。但最终您将需要所有 3 种方法来生成挂钩事件,(以及有时删除它们。)

【讨论】:

嗯,我不确定事件窗格在哪里?我试过寻找,但没有看到有黄色闪光的。 它是和属性窗格一起的窗格之一,通常在右下角,并且在所有VS版本中都不是黄色的,请看截图! 谢谢你,这正在工作。我只是好奇为什么教程不包括这个?我已经阅读了 20 多种不同的书,但从未遇到过。 现在我很好奇如何使用正确的选择填充组合框,因为它是“DrowDownList”。 这是一个新问题;像往常一样首先谷歌并在那里阅读一些SO答案;尝试一些代码,何时以及如果你没有成功写一个新问题!【参考方案2】:

在尝试从 datagridview 获取数据时,我使用了一种稍微不同的方法。

试试personIDTextBox.Text = DataGridView01.SelectedCells[0].Value.ToString();

但不是选择更改事件,而是切换到 CellClick 并将 datagridview 行选择属性的属性更改为全行选择。之后,您可以更改 SelectedCell[0] 数字以匹配您想要的任何单元格

【讨论】:

感谢您的帮助,但我发现 DataGridView 不包含 SelectedCell 的定义。 对不起,我刚刚发现我写的内容中有一个错字 - SelectedCells[0] 是方法(复数,而不是单数)。答案已更新【参考方案3】:

如果要将datagridview选中的行显示到相应的文本框中,请按照以下步骤进行,

第 1 步: 1. 在Datagridview 属性中将DataGridView 的选择模式改为FullRowSelect。 2. 使用属性在数据网格视图中创建单元格单击事件。 enter image description here 3. 编写下面的代码并测试一下,可能会有所帮助

private void DataGridView01_CellClick(object sender,DataGridViewCellEventArgs e)

if (DataGridView01.Rows.Count > -1)

PersonIdTextBox.Text=DataGridView01.Rows[e.RowIndex].Cells[0].Value.ToString();
comboBox1.Text = DataGridView01.Rows[e.RowIndex].Cells[1].Value.ToString();
Txt_FirstName.Text = DataGridView01.Rows[e.RowIndex].Cells[2].Value.ToString();
 mIDDLENAMETextBox.Text = DataGridView01.Rows[e.RowIndex].Cells[3].Value.ToString();
sURNAMETextBox.Text = DataGridView01.Rows[e.RowIndex].Cells[4].Value.ToString();
cITYTextBox.Text = DataGridView01.Rows[e.RowIndex].Cells[5].Value.ToString();
eMAILTextBox.Text = DataGridView01.Rows[e.RowIndex].Cells[6].Value.ToString();



【讨论】:

以上是关于将 DataGridView 值复制到 TextBox的主要内容,如果未能解决你的问题,请参考以下文章

Python - 从列中提取/复制分隔文本到新列 xlsx

使用列表作为 DataGridView 的数据源

复制VB数据表到本地数据库

在 DataGridView 中复制行

将 DataGridView 中的值添加到 SQL

如何将值收集到数组中并将集合传递给 C# 中的 datagridview?