使用键盘上的删除按钮调用 DeleteButtonClick

Call DeleteButtonClick with Delete button from keyboard

private void BrisiBtn_Click(object sender, EventArgs e)
{
    if (tabelaIsplakaci.CurrentCell != null)
    {
        if (MessageBox.Show("Дали сакате да го избришите овој запис? ", "Избриши запис", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            cIsplakciPrimaci currentIsplakac = lstIsplakaci[tabelaIsplakaci.CurrentCell.RowIndex];
            IPDB.DeleteIsplakac(currentIsplakac, ZiroSmetkaObj);
            MessageBox.Show("Записот е избришан!");
            tabelaIsplakaci.Rows.RemoveAt(tabelaIsplakaci.CurrentCell.RowIndex);
            ReadIsplakaci();
        }
        else
        {
            MessageBox.Show("Записот не е избришан! ", "Избриши запис", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    else { MessageBox.Show("Не постои ниеден запис!"); }
}

我有这个删除数据的按钮,我需要用删除按钮调用它 从键盘,所以我这样做:

private void Isplakaci_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
        //what should I do here, if I write
    }
}

我不建议执行按钮点击。因为逻辑上不对。尝试制作明确的过程(至少 function 带或不带参数)来放置您的逻辑并在您需要此功能的任何地方显式调用此过程(包括按钮单击事件)。这将更合适和可读。 但是如果你想 您可以在按钮上使用 PerformClick

Example

BrisiBtn.PerformClick();

我无法假装理解您正在使用的语言,也无法重建您的所有代码,我可以为您提供一个示例,您应该能够更改以开始工作。

您要避免的事情是以任何方式尝试模拟点击。您希望尽可能地将您的逻辑与 UI 分开。这是您需要的结构:

private void BrisiBtn_Click(object sender, EventArgs e)
{
    if (tabelaIsplakaci.CurrentCell != null)
    {
        if (MessageBox.Show("Дали сакате да го избришите овој запис? ", "Избриши запис", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            cIsplakciPrimaci currentIsplakac = lstIsplakaci[tabelaIsplakaci.CurrentCell.RowIndex];
            DeleteIsplakaci(currentIsplakac);
        }
        else
        {
            MessageBox.Show("Записот не е избришан! ", "Избриши запис", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    else { MessageBox.Show("Не постои ниеден запис!"); }
}

private void Isplakaci_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Delete)
    {
        DeleteIsplakaci(currentIsplakac);
    }
}

private void DeleteIsplakaci(cIsplakciPrimaci currentIsplakac)
{
    IPDB.DeleteIsplakac(currentIsplakac, ZiroSmetkaObj);
    MessageBox.Show("Записот е избришан!");
    tabelaIsplakaci.Rows.RemoveAt(tabelaIsplakaci.CurrentCell.RowIndex);
    ReadIsplakaci();
}

我知道这段代码不会像现在这样工作——你需要重构——但结构应该相当正确。