在代码中,button_Click的调用与实际单击的行为不同

本文关键字:单击 调用 代码 button Click | 更新日期: 2023-09-27 18:00:21

我正在用c#winforms编写一个程序,并且有一个TextBox绑定到一个实体框架对象:

BindingList<Settings> bindingList = BillContext.Settings.Local.ToBindingList();
field6TextBox.DataBindings.Add("Text", bindingList, "CustomerField6");

我创建了一个保存按钮来将更改保存到数据库中:

private void saveCustomerFields_Click(object sender, EventArgs e){
    BillContext.SaveChanges();
}

如果我点击保存按钮,一切都很好,但如果我使用我为保存按钮创建的快捷键:

private void field6TextBox_KeyDown(object sender, KeyEventArgs e){
    if(e.KeyData.Equals(Keys.Enter))
        saveCustomerFields_Click(sender, e);
}

private void MainForm_KeyDown(object sender, KeyEventArgs e){
    if(e.KeyData == (Keys.Control | Keys.S)){
        saveCustomerFields_Click(sender, e);
    }
}

虽然调用了save-click事件处理程序,但BillContext.Settings.Local不会更改,这会导致更改不会保存到数据库中。

点击和在代码中调用按钮点击事件句柄有什么不同的结果(考虑到我没有使用方法输入)?我怎样才能使我的快捷键工作?

在代码中,button_Click的调用与实际单击的行为不同

尝试替换

saveCustomerFields_Click(sender, e);

带有

saveCustomerFields.PerformClick();