我正在构建一个表单,其中每个控件都数据绑定到不同类的属性,并且我发现有一些控件在我尝试离开控件时根本不会失去焦点。例如,我有一个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); }
}
和另一个对象(用托管c ++编写)
float getMajorTicks() {return majorTicks;};
void setMajorTicks(float val) {majorTicks = val;};