【问题标题】:in code invocation of button_Click behaves differently than actually clicking在代码中 button_Click 的调用行为与实际单击不同
【发布时间】:2015-06-29 08:50:00
【问题描述】:

我正在用 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);
    }
}

虽然调用了保存点击事件处理程序,但BillContext.Settings.Local 没有更改,导致更改未保存到数据库中。

按钮单击事件句柄的单击和代码调用如何产生不同的后果(考虑到我不使用方法输入)?以及如何使我的快捷键起作用?

【问题讨论】:

  • 简而言之,它不应该。 SaveChanges 是做什么的?
  • BillContext 是我扩展实体框架DbContext 的类。它将在此上下文中所做的所有更改保存到底层数据库。

标签: c# winforms entity-framework data-binding eventhandler


【解决方案1】:

尝试替换

saveCustomerFields_Click(sender, e);

saveCustomerFields.PerformClick();

【讨论】:

  • 您的问题是 Click 事件使用来自 KeyDown 事件的参数(sender 和 e)。顺便说一句,如果有帮助,请标记为正确:)
猜你喜欢
  • 2018-10-11
  • 2022-11-02
  • 1970-01-01
  • 2019-08-09
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 1970-01-01
相关资源
最近更新 更多