将 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的主要内容,如果未能解决你的问题,请参考以下文章