2008-11-14 56 views
5

這有點奇怪,但我一直在掙扎幾個小時,我無法理解發生了什麼。不能禁用數據綁定Winforms下拉列表

我想知道是否有其他人遇到過這個問題,也可以解釋一下。我正在構建一個簡單的Winforms應用程序,並嘗試使用許多內置控件。

基本上,我有一個用戶控件和一些數據捕獲字段的表單。 3個字段是下拉列表,並且在用戶控件上,我有一個bindingSource控件直接綁定到Product類。

在運行時,我向BindingSource提供Product類的一個實例,並且該類包含ProductType的屬性。爲了簡單起見,我還在產品類中添加了一個List<ProductType> ProductTypes,該類可以在查詢時自行加載,這意味着我可以使用相同的bindingSource並選擇ProductTypes Data Member作爲下拉列表的數據源。

在運行表單時,列表完美綁定,我可以看到列出的所有產品類型,並且我可以選擇一個和選項卡或單擊到下一個字段。但顯然選定的值不會綁定,因爲我沒有選擇任何綁定 - SelectedValue作爲下拉列表,只有一個數據源。只要確保下拉列表通過綁定到Bindings-SelectedValue來修改產品的實例,然後運行表單,該列表仍然可以完美填充,並且只要我不從下拉菜單中進行選擇。如果我從下拉菜單中進行選擇,則下拉菜單的焦點爲。我無法列出愛情或金錢,甚至無法單擊表單上的取消按鈕,關閉按鈕右上角是我可以點擊的唯一按鈕,這是可行的,我無法點擊任何其他字段或下拉菜單。一旦做出選擇,這會影響所有三個下拉菜單。

任何人有任何想法我失蹤?

我試着改變了一些東西,並通過提供一個字符串[]而不是一個對象的成員的下拉值取得了一些成功。這似乎工作,但擊敗使用數據綁定的對象不是嗎?

任何幫助表示讚賞!

回答

8

只是在這裏猜測,因爲我沒有時間設置測試並立即確認,但是您是否在進行任何驗證?我似乎記得,如果內容不確認,數據綁定控件不會讓你離開。即使你沒有明確指出,試着將CausesValidation設置爲False,看看後臺是否有任何驗證,至少可以給你一個提示。

+0

非常感謝湯姆 - 簡直不敢相信那麼簡單!去顯示當你不包括驗證檢查時會發生什麼,因爲它是一個測試應用程序;-) – RobertTheGrey 2008-11-14 18:40:23

0

對於Infragisticst Dropdowns(其他winform下拉菜單可能不是這樣):如果將「LimitToList」設置爲true,則可以將其停留在無法實現的下拉菜單中。甚至使用ItemNotInList觸發警告消息。

1

感謝您對此的意見,幫助我圍繞這一點打好基礎。

在我的情況下,事實證明,我的ComboBox.Validating事件中的一個EventHadlers正在拋出異常。這很難追查,因爲IDE沒有向我顯示這種例外。我能夠修改異常行爲(在調試菜單中)並讓它顯示任何正在拋出的InvalidOperationException異常,然後我就能夠追蹤它。

正如湯姆建議,關閉CuasesValidation是找出它的票據。