使用自定义DialogBox从DataGridView中删除行

时间:2016-01-14 11:19:54

标签: c# winforms datagridview

我所做的是rightclicks上的用户row。出现一个菜单,他们选择delete选项。但是没有确认对话框。如何使用我创建的自定义表单。那个delete,cancel buttons。 我的代码有效;

private void Delete_Click(object sender, EventArgs e)
{

    if (this.dgvTable.SelectedRows.Count > 0)
    {
        dgvTable.Rows.RemoveAt(this.dgvTable.SelectedRows[0].Index);
    } 
    //Call FrmDelete??
}

如何使用新表单确认删除。我尝试过使用MessageBox

DialogResult dialogResult = MessageBox.Show("ARE YOU SURE?", "DELETE Title", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
    if (this.dgvTable.SelectedRows.Count > 0)
            {
                dgvTable.Rows.RemoveAt(this.dgvTable.SelectedRows[0].Index);
            } 
}
else if (dialogResult == DialogResult.No)
{
    //do something else
}

我知道这可能是最简单的选择。但我想使用新的Delete Form

由于

2 个答案:

答案 0 :(得分:0)

你只需改变几行。

第一个显示表格:

DialogResult dialogResult = new DeleteForm().ShowDialog();

然后检查结果是“OK”而不是“是”:

if(dialogResult == DialogResult.OK)

最后,永远不会返回DialogResult.No,因此您的else if应该只是else

答案 1 :(得分:0)

您必须使用新表单的DialogResult属性。

以新的形式:

void ButtonDelete_Click(object sender, EventArgs e)
{
   this.DialogResult = System.Windows.Forms.DialogResult.OK;
   this.Close();
}

void ButtonCancel_Click(object sender, EventArgs e)
{
   this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
   this.Close();
}

然后以主要形式:

private void Delete_Click(object sender, EventArgs e)
{
    YourDialog dlg = new YourDialog();
    DialogResult dialogResult = dlg.ShowDialog();
    if(dialogResult == DialogResult.OK)
    {
        if (this.dgvTable.SelectedRows.Count > 0)
                {
                    dgvTable.Rows.RemoveAt(this.dgvTable.SelectedRows[0].Index);
                } 
    }
    else if (dialogResult == DialogResult.Cancel)
    {
        return;
    }
}