我在我的應用程序中有一個Winforms DataGridView。當用戶選擇一行並點擊輸入時,我會加載一個新的表單,其中包含與該行相關的詳細信息。獲取數據並顯示屏幕需要大約一秒的時間。一些用戶非常快,他們開始輸入與表單相關的擊鍵,例如Pg Down/Pg Up,甚至在加載之前,並抱怨網格向下滾動,而不是在加載的表單上看到預期的效果。延遲或短暫暫停Windows消息
我需要一種方法來暫停按鍵消息的處理,直到表單被加載。任何想法高度讚賞。
我在我的應用程序中有一個Winforms DataGridView。當用戶選擇一行並點擊輸入時,我會加載一個新的表單,其中包含與該行相關的詳細信息。獲取數據並顯示屏幕需要大約一秒的時間。一些用戶非常快,他們開始輸入與表單相關的擊鍵,例如Pg Down/Pg Up,甚至在加載之前,並抱怨網格向下滾動,而不是在加載的表單上看到預期的效果。延遲或短暫暫停Windows消息
我需要一種方法來暫停按鍵消息的處理,直到表單被加載。任何想法高度讚賞。
你可以捕捉WM_KEYDOWN
消息,而忽略它,如果形式加載(也許是設置一個標誌),或者你可以發佈的消息當前正在加載的表單。
您能否詳細說明如何在加載後將其發佈到新表單中? – SKG 2009-12-09 15:45:24
一個簡單的布爾檢查應該做的。
創建一個bool,將其命名爲'busy',並且當按下回車按鈕時,請將其檢查爲true。
if (!busy)
{
busy = true;
//do your thing
}
簡單地檢查它回false時再加載完成
不是一個解決方案,但不同的方法: 應怎麼做現在,當用戶選擇行並按下回車鍵?:
選項1最好與加載圖標/消息結合使用。如果您確實必須啓用擊鍵,然後在完成加載時捕獲它們並對其進行重新設定。新窗體將接收擊鍵,因爲它是最頂層的和活動的(如果正確完成)。
在我目前的方法中,我首先綁定數據,然後使表單可見。我正在接受你提到的「捕獲他們並且重新燃燒」的方法。不知道如何去實施它。 – SKG 2009-12-09 16:03:05
imho如果表單尚未顯示,用戶正在做pgup/down,那麼他們做錯了。如果用戶可以做到這一點錯了是一個不同的問題;) – RvdK 2009-12-09 15:45:31