使用键盘上的Delete按钮调用DeleteButtonClick

时间:2018-07-02 07:26:32

标签: c# keyboard-shortcuts

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
    }
}

2 个答案:

答案 0 :(得分:0)

我无法假装理解您使用的语言,也无法重构所有代码,我可以为您提供一个示例,您应该可以对其进行更改以开始工作。

您想避免的事情是以任何方式尝试模拟点击。您希望尽可能将逻辑与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();
}

我知道这段代码无法按原样工作-您需要进行重构-但结构应该相当正确。

答案 1 :(得分:-2)

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

  

示例

BrisiBtn.PerformClick();
相关问题