C# 密码正确后从DataGridView中删除所选行

C# 密码正确后从DataGridView中删除所选行,c#,ms-access,datagridview,oledb,C#,Ms Access,Datagridview,Oledb,我想在用户以另一种形式输入正确密码后,从连接到Access数据库的datagridview中删除所选行 我创建了一个应该在密码正确后从表单2中调用的方法,但什么也没发生 表格1: public void DeleteSelectedRows() { foreach (DataGridViewRow item in this.dataGridView1.SelectedRows) { string ID

我想在用户以另一种形式输入正确密码后,从连接到Access数据库的datagridview中删除所选行

我创建了一个应该在密码正确后从表单2中调用的方法,但什么也没发生

表格1:

public void DeleteSelectedRows()
        {
            foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
            {
                string ID = item.Cells[0].Value.ToString();
                conn_SN.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = conn_SN;
                command.CommandText = "DELETE * FROM SN WHERE ID=" + ID;
                command.ExecuteNonQuery();
                conn_SN.Close();
            }
        }
这是我从表单2中调用方法的方式:

private void btnOK_Click(object sender, EventArgs e)
{
    if(textbox.Text=="admin")
    {
        Form1 form = Form1();
        form.DeleteSelectedRows();
    }
}

有什么想法吗?

您可以使用Owner属性。我只是给出一个示例代码。检查此项并修改您的

Form2 form2 = new Form2(dataGridView1);
        From2.Text = "some title text";
form2.Owner=this;
        form2.ShowDialog(this);

//And on form2 ; 
((Form1)this.Owner).YOURMETHODTODELETE(your parameter)

实现YOURMETHODTODELETE从网格中删除行,然后刷新您的网格1

我已设法像这样调用该方法:

private void btnOK_Click(object sender, EventArgs e)
{
    if(textbox.Text=="admin")
    {
    var form = Application.OpenForms.OfType<Meniu>().Single();
    form.DeleteSelectedRows();
    }
}
private void btnOK_单击(对象发送者,事件参数e)
{
if(textbox.Text==“admin”)
{
var form=Application.OpenForms.OfType().Single();
form.DeleteSelectedRows();
}
}

ID列的类型是什么?您是否调试了代码并看到了发生的情况?如果从form1(datagridview所在的位置)调用,则此代码可以完美地工作。但是当我尝试从另一个表单调用它时,它不再工作了。你有例外吗?有什么错误吗?没有。什么都没有发生。如何从第二个表单调用函数?也许这能帮上忙你试过我的解决方案吗?。请告诉我们你是如何解决这个问题的,以便让世界上的一些人从中汲取经验。如果我的堆栈溢出成员提供的答案对您有用,请接受并投票。如果答案没有用处或错误的话,你也可以投反对票。