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

本文关键字:DataGridView 删除行 DialogBox 自定义 | 更新日期: 2023-09-27 18:30:13

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

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
}

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

感谢

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

您必须使用新表单的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;
    }
}

您只需要更改几行即可。

第一个显示形式:

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

然后检查结果是"OK"而不是"Yes":

if(dialogResult == DialogResult.OK)

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