2012-05-08 26 views
0

如果創建字典程序。當使用在剪貼板上覆制一些文本時,它會給出在系統嘗試中可見的複製文本的含義。當用戶點擊他/她的屏幕上的任何位置時,我想關閉表單。但如果用戶想複製一些文本從意思不會關閉我添加更多然後一個動態創建richtextboxes在選項卡控件中顯示數量的意義。我的代碼運行良好接受一件事情時用戶滾動richtextboxes表單將自動關閉。它似乎滾動條不是richtextbox的一部分。幫我解決這個問題我的代碼如下。檢查是否動態創建richtextbox不在焦點

Dim s As Boolean = True 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
    If MouseButtons.ToString = "Left" Or MouseButtons.ToString = "Right" Then 
     If s = True Then 
      If InStr(LCase(Me.ActiveControl.ToString), LCase("Label")) Then 
       Me.Close() 
      End If 
     End If 
    End If 
End Sub 

Private Sub Label1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Label1.Click 
    Me.Close() 
End Sub 
Private Sub frmdict_MouseEnter(ByVal sender As Object, ByVal e As EventArgs) Handles Me.MouseEnter 
    s = False 
    Button1.Focus() 
End Sub 

Private Sub frmdict_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles Me.MouseLeave 
    s = True 
    Label1.Focus() 
End Sub 

== ==更新

我有Form1中包含該代碼添加richtextboxes和標籤,以tabcontrl

Dim myTabPage As New TabPage() 
Dim myrichtext As New RichTextBox() 
myrichtext.Name = "RichTextBox" & i 
myTabPage.Text = StrSearch & i 
frmdict.TabControl1.TabPages.Add(myTabPage) 
myTabPage.Controls.Add(myrichtext) 
myrichtext.RightToLeft = Windows.Forms.RightToLeft.No 
myrichtext.Dock = DockStyle.Fill 
myrichtext.Font = New Font("Urdulink", 14) 

最後打開frmdict顯示意思

If frmdict.TabControl1.TabPages.Count > 0 Then 
    frmdict.TabControl1.RightToLeftLayout = True 
    frmdict.Show() 
    frmdict.Label1.Focus() 
    ' frmdict.TabControl1.Focus() 
Else 
    frmdict.Close() 
End If 

回答

0

您的MouseLeave確實當鼠標移過窗體的一個子控件時觸發,這可能不是您所期望的。

我不知道發生了什麼事情與你的標籤和按鈕,但這樣的事情可能會讓它爲你工作:

If s = True Then 
    If Not rtb1.Bounds.Contains(Me.PointToClient(Cursor.Position)) AndAlso _ 
    TypeOf Me.ActiveControl Is Label Then 
    Me.Close() 
    End If 
End If 

更新:

在動態方面豐富的文本控件,你並不需要這個名字。像這樣的東西應該工作(沒有完全測試):

If TabControl1.SelectedTab IsNot Nothing Then 
    For Each rtb As RichTextBox In TabControl1.SelectedTab.Controls.OfType(Of RichTextBox)() 
    If Not rtb.Bounds.Contains(rtb.PointToClient(Cursor.Position)) Then 
     Me.Close() 
    End If 
    Next 
End If 
+0

這是一個字典程序和我多個richtextboxes動態創建,所以我不知道那裏的名字。而且Thery嵌入在tabl控件中,所以iam無法獲得他們的名字。 – user934820

+0

@ user934820你的意思是所有的RTF控件都在TableLayoutPanel控件中? – LarsTech

+0

no tabcontrol「TabControl1」 – user934820