Jam*_*ler 6 .net c# data-binding winforms
我有一个Windows窗体应用程序.我在这个应用程序中有几个表单(主表单和几个专门的表单),并且在一个表单上,单击事件不会触发我的任何按钮.
并不是处理程序中的代码被破坏了.这可以通过单击按钮时永远不会到达处理程序第一行的断点来确定.
其他事件正在发挥作用(我正在使用CheckedChanged
此表单上的事件并且它们正在运行).
我的团队成员已经审核过,也无法发现问题.
这是我的代码的简化视图:
Designer生成代码
partial class MyForm
{
private System.Windows.Forms.Button addButton;
private void InitalizeComponent()
{
this.addButton = new System.Windows.Forms.Button();
this.addButton.Name = "addButton";
// Drawing statements here
this.addButton.Click += new System.EventHandler(this.addButton_Click);
this.Controls.Add(this.addButton);
}
}
Run Code Online (Sandbox Code Playgroud)
我的守则
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent();
}
private void addButton_Click(object sender, EventArgs e)
{
MessageBox.Show("The debugger is not reaching a break point on this line");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:测试的其他信息
我的表单中有几个数据绑定下拉列表.我发现如果我先在下拉框中进行选择,则只能触发click事件.
如果我没有选择,按钮处理程序中的断点将触发.否则它没有.这些下拉列表中未注册任何事件.
原因如下:
使用数据绑定时,当您在数据绑定控件中输入值时,它首先尝试验证条目,然后如果条目有效,数据绑定将把值放在数据源中,但如果验证错误发生,验证返回false并且你的控件进入无效模式.
当窗体的子控件未验证时,默认情况下您无法从无效控件更改焦点.
默认情况下,单击某个按钮会导致失去焦点的控件的验证,因此您无法单击按钮,因为您看到按钮反映到鼠标但实际上没有单击.
如果您处理Validating
类似TextBox
和设置的控件事件,则会发生同样的问题e.cancel = true
.
这是修复:
您可以使用以下任一选项修复此问题:
CausesValidation
按钮的属性设置为false
AutoValidate
表单的属性设置为AutoValidate.EnableAllowFocusChange
归档时间: |
|
查看次数: |
7519 次 |
最近记录: |