簡體   English   中英

VB.NET拖動文本,設置焦點並輸入關鍵問題

[英]VB.NET Drag text, set focus and enter key issue

我有一個應用程序,允許將文本拖放到文本框中。 我還有一個復選框,允許該應用程序始終位於所有窗口的頂部。 我的問題是,當我將文本拖動到文本框中並按Enter鍵時,除非我將窗口置於實際焦點(單擊它),否則它將無法運行該功能。

我的問題是,如何確保將文本拖到文本框中時,它將使窗口成為焦點,所以當我按Enter鍵時,它將運行我的功能?

這是我沒有運氣的嘗試:

Private Sub Form1_DragEnter(sender As Object, e As DragEventArgs) Handles Me.DragEnter
        Me.Focus()
    End Sub
    Private Sub Form1_DragOver(sender As Object, e As DragEventArgs) Handles Me.DragOver
        Me.Focus()
    End Sub

嘗試在DragEnter中使用Me.Activate()代替它應該足夠了

我正在發布代碼,因為它對我來說很好用,請在新項目上嘗試:

Public Class Form1
    Private Sub TextBox1_DragEnter(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles TextBox1.DragEnter

        ' Check the format of the data being dropped. 
        If (e.Data.GetDataPresent(DataFormats.Text)) Then
            ' Display the copy cursor. 
            e.Effect = DragDropEffects.Copy
        Else
            ' Display the no-drop cursor. 
            e.Effect = DragDropEffects.None
        End If

    End Sub

    Private Sub TextBox1_DragDrop(sender As Object, e As DragEventArgs) Handles TextBox1.DragDrop
        ' Drop text and move cursor to end of drag-dropped text 
        TextBox1.Text = e.Data.GetData(DataFormats.Text)
        TextBox1.SelectionStart = TextBox1.Text.Length + 1
        TextBox1.Focus()
        Me.Activate()
    End Sub

End Class

和設計師:

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form1
    Inherits System.Windows.Forms.Form

'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    Try
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        End If
    Finally
        MyBase.Dispose(disposing)
    End Try
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.  
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
    Me.TextBox1 = New System.Windows.Forms.TextBox()
    Me.SuspendLayout()
    '
    'TextBox1
    '
    Me.TextBox1.AllowDrop = True
    Me.TextBox1.Location = New System.Drawing.Point(30, 54)
    Me.TextBox1.Multiline = True
    Me.TextBox1.Name = "TextBox1"
    Me.TextBox1.Size = New System.Drawing.Size(216, 125)
    Me.TextBox1.TabIndex = 0
    '
    'Form1
    '
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    Me.ClientSize = New System.Drawing.Size(284, 262)
    Me.Controls.Add(Me.TextBox1)
    Me.Name = "Form1"
    Me.Text = "Form1"
    Me.TopMost = True
    Me.ResumeLayout(False)
    Me.PerformLayout()

End Sub
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox

End Class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM