我公司有寫在VB6的大型應用程序,由於歷史的原因,應用程序導航使用Enter鍵,而不是用Tab鍵在字段之間進行導航。我不知道VB6,但是我知道,如果它是一個EnterKey,他們當前將Form的KeyUp事件中的每個控件的焦點放在一個大的select語句中。現在我們開始轉換爲.NET,並且必須保持一致,以便用戶不必在某些表單上進行製表符和在其他表單上進行回車。我想寫祖先的形式,將自動從字段到字段而不是Tab鍵。一位同事告訴我,在VB6中完成的方式是處理不在CLICK事件上的按鈕,而是在KEYUP事件上處理按鈕。我需要繼續這樣做,這樣我的表單完成後就不會有剩餘的KeyUp事件傳回VB6。用於按鈕的事件的順序是如何使用回車鍵
- button_PreviewKeyDown
- button_Click(顯然替換所述按鍵事件)
- form_KeyUp
- button_KeyUp
我創建的表格如下所示:
- 在ANCESTOR窗體的KeyUp事件上,c hecks看看它是否是一個輸入鍵。如果它是一個回車鍵,並且活動控件不是按鈕,它將按標籤順序移動到下一個字段。否則,它會忽略該鍵並讓控件處理它。如果它是一個按鈕,祖先不會知道按鈕想要控制的位置,因爲它取決於按鈕在「單擊」時想要執行的操作。
- 在子窗體的按鈕,單擊事件不執行任何操作,並處理在KeyUp事件和鼠標點擊事件重複。
- ANCESTOR表單具有一個受保護的布爾值EatKeyUp,該值可以由CHILD設置爲True。這在子表單需要發送MessageBox時使用,因爲如果用戶通過MessageBox上的OK按鈕進入,仍然存在剩餘的KeyUp事件,該事件將由祖先表單使用。
雖然klugey,其實這似乎工作。我想知道的是,有沒有更好的方法?也許有些設置的地方,我可以告訴我的應用程序「通過表單輸入而不是Tab鍵」?我正在使用的事件而不是點擊事件是最好的事件嗎?
我沒有試過這個,因爲我不再在那個工作(浩浩!)。但它看起來很合理 - 謝謝! – CindyH 2010-12-03 05:06:32