所有控件都提供某種事件以指示該值已被修改。例如,當您輸入一個文本框並開始鍵入每個擊鍵時,就會有一個TextChanged
事件。打開組合框並在下拉列表中選擇一個新項目時,您會收到一個SelectedIndexChanged
事件。.NET確定控件的值已更改並最終確定
問題在於,在許多情況下,更改事件表示一系列代表臨時未完成狀態的更改。例如當用戶輸入他的郵政編碼時,沒有理由查找城市和州,甚至在用戶輸入完成之前嘗試驗證它。當用戶專注於運輸方式組合,並在試圖找到他想要的組合值時按下上/下鍵來瀏覽組合值時,沒有理由假定運輸方法已經被指定並因此將其應用於發票。在對值進行分頁後,等待他退出組合框以指示已選擇運送方法,這可能是有意義的。我們不想受到一系列臨時國家的困擾。
在我們的商店中,我們實施了一個Finalized
事件,該事件僅在用戶開始進行一些手動更改(與編程式更改(如從數據庫設置郵政編碼)相反時觸發),然後完成。這個Finalized
事件必須以不同的控制方式處理;我不知道任何.NET功能可以使這一點更容易。
我現在唯一的想法是嘗試使用類似Rx(功能反應式編程)來適應這種情況。任何有助於實現這個簡單.NET方法的想法?
你只知道用戶在將焦點改變到另一個控件時完成了輸入。如在另一個框中輸入文本或單擊確定按鈕。所以你對Leave事件感興趣。驗證事件是專門爲此設計的。 –
這真的取決於應用程序。谷歌地圖精美地給出了一個下拉列表,其中的項目被每次按鍵過濾。我還使用了一個計時器,每次擊鍵都會重置一次,並在達到某個秒數後觸發一個觸發數據庫查詢的事件。 – djv
驗證工作正常。這是一個誤導性的名字,但。我們使用它的方式與驗證相關的任何事情都沒有關係。我們只是等待用戶的交互完成,然後再用他的輸入做一些動態的事情。 – Mario