我正在构建一个表单,其中每个控件数据绑定到不同类的属性,我发现当我尝试离开控件时,有些控件根本不会失去焦点。例如,我有一个 numericUpDown 控件,它数据绑定到一个单独类的属性,如果我单击 numericUpDown,它将获得焦点,但是如果我在控件外部单击,它不会失去焦点。我无法访问表单上的其他控件,也无法退出表单。右上角的 X 按钮什么也不做,而 numericUpDown 仍然具有焦点。
当我尝试调试以查看到底发生了什么时,我看到每当我试图离开控件时,都会调用“Leave”事件,并且正在更新数据绑定值,但是随后立即调用了“Enter”事件。
这是我正在谈论的 numericUpDown 的数据绑定代码。numericUpDown 被命名为“Major_Tick_Number”并绑定到 theDial.Representation 中的属性 MajorTicks:
Major_Tick_Number.DataBindings.Add("Value", theDial.Representation, "MajorTicks");
这是它的设计器代码:
this.Major_Tick_Number.Location = new System.Drawing.Point(195, 17);
this.Major_Tick_Number.Maximum = new decimal(new int[] {
1000,
0,
0,
0});
this.Major_Tick_Number.Name = "Major_Tick_Number";
this.Major_Tick_Number.Size = new System.Drawing.Size(46, 20);
this.Major_Tick_Number.TabIndex = 63;
this.Major_Tick_Number.Value = new decimal(new int[] {
10,
0,
0,
0});
同样,数据绑定在值正在更新的意义上工作正常,但控件根本不会失去焦点。
如果我删除数据绑定,控件会正常获得和失去焦点。
我要注意的事情:我使用的是 Visual Studio 2008,并且正在使用 C# 进行编程。另外,我的表单有一个 tabControl,我所有的其他控件都在 tabControl 上,不确定这是否重要。另外,我想强调一些控件(可能是 25%)工作正常,而一些控件存在焦点问题,我真的看不出任何控件工作和不工作的模式。
如果您需要更多信息,请告诉我。您可以提供的任何帮助和建议将不胜感激。
谢谢你。
这是数据绑定到的属性
public float MajorTicks {
get { return otherObject.getMajorTicks(); }
set { otherObject.setMajorTicks(value); }
}
在 otherObject 中(用托管 C++ 编写)
float getMajorTicks() {return majorTicks;};
void setMajorTicks(float val) {majorTicks = val;};