我們常常會有這樣的需求,想在視窗開啟的時候就將焦點(游標)設定到某個指定的控制項上去。
我們都知道設定焦點需要用到setfocus這個方法(幾乎任何程式設計環境都這樣vc,c#,vb,vf都這樣)。
但在vc中我們使用了getdlgitem(idc_xx)->setfocus()並不一定會達到我們需要的效果。
如果我們僅僅設定了setfocus()那是不夠的,我們還需要將對話方塊中的oninitdialog的最後那句return設定為"false";
我曾經在對話方塊中對各個控制項的輸入進行校驗檢測,當檢測到不滿足要求的輸入則會彈出對話方塊提示。
我本來的目的是彈出提示框,但確定後回到窗體中後就將焦點和游標設定到對應的控制項上,結果死都上不去。
一開始我以為是setfocus的設定無效,後面發現是邏輯上錯了,因為當提示框顯示的時候,在提示框彈出前通過setfocus設定的焦點都將作廢。
發現這一點後,我將彈出提示框前需要設定獲得焦點的目標控制項儲存起來,等提示框顯示完了我仍然可以對該控制項進行設定焦點的操作,問題總算解決了。
這裡寫出來,希望大家不要走我這樣的彎路哦!
順便說一下如何獲取到焦點所在的控制項的id號,也許這對大家操作焦點所在控制項有作用;
mfc::
cwnd *pwnd = getfocus();
if(pwnd == null)
;//no focus
else
uint nid = pwnd->getdlgctrlid();
sdk:
hwnd hwnd = ::getfocus();
if(hwnd == null)
;//no focus
else
uint nid = ::getdlgctrlid(hwnd);
Qt設定回車焦點
ui.pushbutton setfocus 設定預設焦點 ui.pushbutton setshortcut qkeysequence insertparagraphseparator 設定快捷鍵為鍵盤的 回車 鍵 ui.pushbutton setshortcut qt key enter 設定...
WinForm設定控制項焦點focus
winform視窗開啟後文字框的預設焦點設定,進入視窗後預設聚焦到某個文字框,兩種方法 設定tabindex 把該文字框屬性裡的tabindex設為0,焦點就預設在這個文字框裡了。winform的activated事件 在form的activated事件中新增textbox1.focus 即可獲得焦...
android中設定控制項獲得焦點
android中,要使控制項獲得焦點,需要先setfocus,再requestfocus。以button為例 btn.setfocusable true btn.setfocusableintouchmode true btn.requestfocus btn.requestfocusfromtou...