【问题标题】:How to be able to select the text but not the textbox如何能够选择文本而不是文本框
【发布时间】:2014-07-14 03:34:16
【问题描述】:

这似乎很简单,但我想不出一种方法来做到这一点,而且在互联网上的任何地方都没有我能找到的解决方案,这让我相信使用这种语言是不可能的.

我有一个简单的程序,你给它输入,点击一个按钮,它就会输出到一个文本框中。

我不得不将其设为文本框而不是标签,因为您无法突出显示标签中的文本,而这是用户复制文本所必需的。但是,作为文本框,用户可以选择该框。我已将其设置为只读,因此他们无法输入,但如果单击该框,闪烁的文本光标仍然存在,并且看起来非常糟糕。我也尝试将 Enabled 设置为 False,但无法突出显示文本。

文本框本身应该不能被选中,只能选择文本框内的文本。

我该怎么做?

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    P/Invoke 是我所知道的唯一方法。

    <System.Runtime.InteropServices.DllImport("user32.dll")> _
    Private Shared Function HideCaret(hWnd As IntPtr) As Boolean
    End Function
    
    Private Sub TextBox1_GotFocus(sender As Object, e As EventArgs) Handles TextBox1.GotFocus
        HideCaret(TextBox1.Handle)
    End Sub
    

    这里是关于 user32.dll HideCaret 函数的文档: http://msdn.microsoft.com/en-us/library/windows/desktop/ms648403(v=vs.85).aspx

    【讨论】:

    • 啊,这更有意义,我就像“......那不是 VB.net”
    • 是的,在我意识到你在寻找 VB 之前,我不得不从我手头的 C# 项目中将它刷掉。希望转换对您有用。
    • 您可能需要在控件的焦点事件中调用它,我不记得它是否停留在更改控件之间。
    • 是的,我有点不知道该把它们放在哪里。它警告我该函数没有返回值,我知道它不应该返回值,但我不知道在我的代码中将公共子放在哪里。
    • 我以另一种方式处理这个问题,我认为我会分享。我有一个文本框和一个可以复制到剪贴板的小按钮。这样用户就不必专注于文本框,选择文本,然后右键单击并复制或使用键盘快捷键...(我知道您可以使用一些 jscript 来选择焦点上的所有文本)...但只需单击更容易的按钮。
    猜你喜欢
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多