2010-10-15 46 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