一個(gè)時(shí)刻只有一個(gè)窗體能獲得焦點(diǎn)。關(guān)鍵是窗體收到
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),譙城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:譙城等地區(qū)。譙城做網(wǎng)站價(jià)格咨詢:18982081108
WM_KILLFOCUS
消息時(shí)的重繪。如果你只是想讓窗體看起來并沒有什么不同,就這樣吧。我用
VB6,所以寫的都是
API,VB.NET
的庫不是很熟,所以……將就一下吧。
調(diào)用
SetWindowLong,使窗體的消息處理鏈接到新的窗口函數(shù)
NewWndProc,然后在
NewWndProc
里檢測(cè)到
WM_KILLFOCUS
時(shí)就將其移出消息隊(duì)列即可。完畢之后調(diào)用原來的窗口函數(shù)。
Public
Class
Form3
按下,顯示控件,并獲得焦點(diǎn).
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
TextBox1.Visible
=
True
TextBox1.Focus()
End
Sub
判斷是否獲得焦點(diǎn).
Private
Sub
Button2_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button2.Click
If
TextBox1.Focused
=
True
Then
MessageBox.Show("已經(jīng)獲得焦點(diǎn)了.")
Else
MessageBox.Show("已經(jīng)失去焦點(diǎn)了.")
End
If
End
Sub
失去焦點(diǎn)后自動(dòng)陷藏.
Private
Sub
TextBox1_LostFocus(ByVal
sender
As
Object,
ByVal
e
As
System.EventArgs)
Handles
TextBox1.LostFocus
TextBox1.Visible
=
False
End
Sub
End
Class
SetFocus 方法
將焦點(diǎn)移至指定的控件或窗體。
1.對(duì)象必須是 Form 對(duì)象、MDIForm 對(duì)象或者能夠接收焦點(diǎn)的控件。調(diào)用 SetFocus 方法以后,任何的用戶輸入將指向指定的窗體或控件。
2.焦點(diǎn)只能移到可視的窗體或控件。因?yàn)樵诖绑w的 Load 事件完成前窗體或窗體上的控件是不可視的,所以如果不是在 Form_Load 事件過程完成之前首先使用 Show 方法顯示窗體的話,是不能使用 SetFocus 方法將焦點(diǎn)移至正在自己的 Load 事件中加載的窗體的。
3.也不能把焦點(diǎn)移到 Enabled 屬性被設(shè)置為 False 的窗體或控件。如果已在設(shè)計(jì)時(shí)將 Enabled 屬性設(shè)置為 False,必須在使用 SetFocus 方法使其接收焦點(diǎn)前將 Enabled 屬性設(shè)置為 True。
最正統(tǒng)的方法是把TextBox1的TabIndex屬性設(shè)為0(其他控件的TabIndex不能是0)
要在Load事件里用TextBox1.Focus()也可以,但要先Me.Show(),否則不會(huì)起作用。因?yàn)榭丶玫浇裹c(diǎn)需要控件”可見可用“,在FormLoad階段整個(gè)窗體是“不可見"的,需要強(qiáng)制使用Me.Show()。
這個(gè)最好是建議你用后臺(tái)發(fā)送數(shù)據(jù)的方法,你可以百度下SendMessage和PostMessage這兩個(gè)函數(shù)
首先你要確定入口程序
因?yàn)槟惆汛a寫在了FORM1的LOAD事件里,到最后他還是要回到FORM1來。
最簡(jiǎn)單的辦法
newfrm2.ShowDialog