1

クリックして無効になっているテキストボックスを有効にする簡単な方法は? これはどのように行われますか?

私のコードは動作しません

Private Sub Textbox1_MouseClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Textbox1.MouseClick
    Textbox1.Enabled = True
End Sub

誰でも私を助けることができますか?

マウスのクリックとテキストボックスの X、Y 位置をタイマーなどで追跡する必要がありますか?クリックしてもイベントは発生しませんか?

4

4 に答える 4

5

IMessageFilter を使用して WM_LBUTTONDOWN メッセージをトラップし、カーソルが TextBox 内にあるかどうかを確認できます...次のようになります。

Public Class Form1

    Private WithEvents filter As New MyFilter

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        TextBox1.Enabled = False
        Application.AddMessageFilter(filter)
    End Sub

    Private Sub filter_LeftClick() Handles filter.LeftClick
        Dim rc As Rectangle = TextBox1.RectangleToScreen(TextBox1.ClientRectangle)
        If rc.Contains(Cursor.Position) AndAlso Not TextBox1.Enabled Then
            TextBox1.Enabled = True
            TextBox1.Focus()
        End If
    End Sub

    Private Class MyFilter
        Implements IMessageFilter

        Public Event LeftClick()
        Private Const WM_LBUTTONDOWN As Integer = &H201

        Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
            Select Case m.Msg
                Case WM_LBUTTONDOWN
                    RaiseEvent LeftClick()

            End Select
            Return False
        End Function

    End Class

End Class
于 2013-07-06T00:28:54.463 に答える
1

別の方法として、MouseClick イベントが別のコントロール (別の TextBox など) に到達したときに、ReadOnly コントロール プロパティを True に設定し、Text プロパティを "" に設定することもできます。

それは私にとってはうまくいきます。私のコードは次のとおりです。

Private Sub TxtNameIn_Click(sender As Object, e As EventArgs) Handles TxtNameIn.MouseClick
    Me.TxtNameIn.ReadOnly = False
    Me.TxtPatternIn.ReadOnly = True
    Me.TxtPatternIn.Text = ""
End Sub
Private Sub TxtPatternIn_Click(sender As Object, e As EventArgs) Handles TxtPatternIn.MouseClick
    Me.TxtPatternIn.ReadOnly = False
    Me.TxtNameIn.ReadOnly = True
    Me.TxtNameIn.Text = ""
End Sub
于 2015-07-09T12:49:31.937 に答える
0

テキスト ボックスがこのenabled = false状態になると、マウスでクリックできなくなります。

于 2013-07-05T23:15:36.423 に答える