2016-08-10 52 views
0

我有一個按鈕,它將sendkeys傳遞給焦點的文本框。在這種情況下,它是Textedit1使用ActiveControl或使用任何方法獲取最後一個活動控件,並使用SendKeys控件獲取最後一個活動控件

'get current focused form. 
    AppActivate(Process.GetCurrentProcess.Id) 

    'set current focused textbox 
    TextEdit1.Focus() '<- is it possible to change this so that it gets the *LAST* selected control, then focus? 



    'the character to be passed 
    SendKeys.Send("B") 

不過,我有我的窗體上的很多文本框,這將是不切實際的代碼放在對我的形式每個TextBox控件引發LostFocus。

我的計劃是讓最後集中在我的形式控制這是最後控制用戶點擊點擊此按鈕,將焦點設置到它,然後SendKeys.Send它,因此,無論用戶之前點擊一個控件,我可以傳遞SendKeys給它。

你如何獲得最後一個集中控制?是否可以用ActiveControl

編輯 我想提出一個軟件,可用於觸摸顯示器,並且要求是,我有一個屏幕上的鍵盤僅專用於軟件。我不能使用OSK。

+0

如果您有對TextEdit控件的引用,爲什麼需要調用SendKeys?如果您向我們提供關於您的應用程序總體目標的更多信息,我們可能會提出一些有益的建議 – FloatingKiwi

+0

添加了原因,並解釋了問題的要求。 –

回答

0
Private PreviousControl As Control 
Private Sub doSet(ByVal parentCtr As Control) 
    Dim ctr As Control 
    For Each ctr In parentCtr.Controls 
     AddHandler ctr.Leave, AddressOf meLeave 
     doSet(ctr) 
    Next 
End Sub 
Private Sub meLeave(ByVal sender As Object, ByVal e As System.EventArgs) 
    PreviousControl = DirectCast(sender, Control) 
End Sub 
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    doSet(Me) 
End Sub 
Private Sub btn15_Click(sender As Object, e As EventArgs) Handles btn1.Click 
    Dim strName As String 
    strName = PreviousControl.Name 
End Sub 
+0

你好,歡迎來到堆棧溢出!你能否編輯你的答案並添加一些文字說明這段代碼的作用以及它如何幫助回答發佈的問題? –

相關問題