winforms 从选定的datagridview行获取数据,哪个事件?

2w2cym1i  于 2022-12-30  发布在  其他
关注(0)|答案(6)|浏览(176)

我有一个数据网格视图(选择模式: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;
}

还有许多其他的文本框,但主要的问题是似乎没有一个事件被触发,我应该使用什么事件来触发,或者是我可能设置错了datagrid的某个属性吗?如果有任何帮助,我将不胜感激...:(

vnzz0bqm

vnzz0bqm1#

由于您使用的是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();
        //...
    }
}

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

sg24os4d

sg24os4d2#

您可以尝试此单击事件

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();
vxqlmq5t

vxqlmq5t3#

首先获取一个标签,将其可见性设置为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
kqhtkvqz

kqhtkvqz4#

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

windows Form Designer Generated Code.

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

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

希望能有所帮助。

2g32fytz

2g32fytz5#

简单的解法如下,这是对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数据网格视图选择模式。如果选择了两行以上,您可以扩展此模式以给予消息。

epggiuax

epggiuax6#

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

相关问题