winforms 如何使用DataGridViewRow中的数据填充文本框?

2ekbmq32  于 2023-03-09  发布在  其他
关注(0)|答案(6)|浏览(129)

我在Windows窗体上有一个DataGridViewSelectionmode: FullRowSelect)和一些文本框。我希望单击(或双击)的行的内容显示在文本框中。
我试过这个代码:

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    MessageBox.Show("Cell Double_Click event calls");
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = row.Cells[1].Value;
}

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int rowIndex = e.RowIndex;
    DataGridViewRow row = dataGridView1.Rows[rowIndex];
    textBox5.Text = dataGridView1.Rows[1].Cells[1].Value.ToString();// row.Cells[1].Value;
}

还有许多其他的文本框,但主要的问题是似乎没有一个事件被触发,我应该使用什么事件来触发,或者DataGridView的某个属性可能设置错了?

rfbsl7qr

rfbsl7qr1#

由于您使用的是FullRowSelect选择模式,因此可以使用SelectionChanged事件。然后,在处理程序内部,您可以访问SelectedRows属性并从中获取数据。示例:

private void dataGridView_SelectionChanged(object sender, EventArgs e) 
{
    foreach (DataGridViewRow row in dataGridView.SelectedRows) 
    {
        string value1 = row.Cells[0].Value.ToString();
        string value2 = row.Cells[1].Value.ToString();
        //...
    }
}

您还可以遍历列集合,而不是键入索引...

x759pob2

x759pob22#

您可以尝试此单击事件

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0)
    {
        DataGridViewRow row = this.dataGridView1.Rows[e.RowIndex];
        Eid_txt.Text = row.Cells["Employee ID"].Value.ToString();
        Name_txt.Text = row.Cells["First Name"].Value.ToString();
        Surname_txt.Text = row.Cells["Last Name"].Value.ToString();
gkl3eglg

gkl3eglg3#

首先获取一个标签,将其可见性设置为false,然后在DataGridView_CellClick事件上编写以下内容

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    label.Text=dataGridView1.Rows[e.RowIndex].Cells["Your Coloumn name"].Value.ToString();
    // then perform your select statement according to that label.
}
//try it it might work for you
7kjnsjlb

7kjnsjlb4#

您应该检查设计器文件。打开Form1.Designer.cs并找到此行:

windows Form Designer Generated Code.

展开它,你会看到很多代码,所以如果没有放置它,检查这一行是否在datagridview1控件内部。

this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);

希望能有所帮助。

x7yiwoj4

x7yiwoj45#

简单的解法如下,这是对vale解法的改进。

private void dgMapTable_SelectionChanged(object sender, EventArgs e) 
{
    int active_map=0;
    if(dgMapTable.SelectedRows.Count>0)
        active_map = dgMapTable.SelectedRows[0].Index;
    // User code if required Process_ROW(active_map);
}

请注意,对于其他读者来说,要使上面的代码工作,应该使用FullRowSelect数据网格视图选择模式。如果选择了两行以上,您可以扩展此模式以给予消息。

ffx8fchx

ffx8fchx6#

您可以使用SelectionChanged事件。CurrentRow。DataBoundItem将给予绑定项。
SelectionMode属性应为整行选择。
变量项=([转换为绑定项])数据网格位置.当前行.数据绑定项;tbxEditLocation.文本=项目.名称;

相关问题