2010-10-15 63 views
2

我正在开发使用Visual Studio 2010和C#的Word 2010插件。验证/编辑事件不在类库中触发窗体

  • 我创建了一个简单的窗体,带有两个文本框和一个Ok按钮。

  • 确定按钮的原因验证属性设置为true。

  • 这两个文本框的CausesValidation属性设置为false,并设置其验证和验证属性。这是为了使它们仅在单击确定按钮时进行验证,而不是在更改焦点时进行验证。

如果表单代码是在Word插件中定义的,则验证和验证的事件按预期运行 - 单击“确定”按钮时。我想让表单可重用,所以我将表单移动到单独的类库。该表单很大程度上按预期工作,但验证和验证事件从未运行上述配置。

有人知道为什么会出现这种情况吗?这是一个错误吗?

+0

这听起来很像Winforms/UI问题。你有没有尝试从简单的Windows应用程序调用你的类库代码?这样,您至少可以弄清问题是来自您的课程库还是来自VSTO。 – Mathias 2010-10-16 16:12:47

+0

嗨。我现在重新创建了一个非常简单的情况:创建一个包含一个文本框和一个按钮的表单库。按钮会导致invalidation被设置为true,并且文本框会导致validation被设置为false。我创建了另一个表单项目,并为它添加了一个继承的表单。表单加载,但文本框验证和验证的事件永远不会触发(除非我设置导致验证文本框为真,然后验证事件触发时,我点击按钮)。 – zikoziko 2010-10-29 13:04:23

+0

看来,如果我将基本窗体的AutoValidate属性设置为Disable,并将文本框的CausesValidation属性设置为true,并在按钮单击中调用this.ValidateChildren()方法,我可以使事情工作! – zikoziko 2010-10-29 13:17:47

回答

2

看来你可以得到的东西的工作,如果您:

1)设置基本形式的AutoValidate属性为禁用。

2)将文本框的CausesValidation属性设置为true。

3)调用按钮单击中的this.ValidateChildren()方法。

+1

你知道你可以接受你自己的答案吗? – 2012-04-11 22:36:27