防止文本框中的闪烁光标

在文本框中,如何在单击时阻止显示闪烁的光标?

我确实在一些论坛中读到了对特定api的调用,但当我在我的代码中尝试它时,显示错误。 如果可能,请提供完整的代码,如果有特定事件需要执行代码,请告诉我。

此文本框是创建用于模拟lan信使的表单窗口的一部分。 我正在使用C#。 该表单有两个文本框,以便类似于谷歌谈话。 希望防止在上部文本框上显示闪烁的光标。

我试过了:

[DllImport("user32")] private static extern bool HideCaret(IntPtr hWnd); public void HideCaret() { HideCaret(TextBox1.Handle); } 

我收到错误:“无法找到DllImport。”

如果要禁止在文本框上进行编辑,请将其ReadOnly属性设置为true。

如果要允许编辑但仍隐藏插入符,请完全按照指定调用Win32 API:

 [System.Runtime.InteropServices.DllImport("user32.dll")] static extern bool HideCaret(IntPtr hWnd); ... HideCaret(myTextBox.Handle); 

嗨,试试这个代码

 public class CustomTextBox:System.Windows.Forms.TextBox { [System.Runtime.InteropServices.DllImport("user32")] private static extern bool HideCaret(IntPtr hWnd); public CustomTextBox() { TabStop = false; MouseDown += new System.Windows.Forms.MouseEventHandler(CustomTextBox_MouseDown); } void CustomTextBox_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { HideCaret(this.Handle); } } 

如果你把hideCaret函数放在Textchange事件中,这将解决问题。

  [DllImport("user32.dll")] static extern bool HideCaret(IntPtr hWnd); private void textBox1_TextChanged(object sender, EventArgs e) { HideCaret(textBox1.Handle); } 

我研究了如何在TextBox上模拟Chrome的url (部分),并从这里和这里收集代码。

它工作正常,首先是Clic,选择所有文本而不显示闪烁的插入符号,诀窍是当你在所选文本上第二次Clic时使插入符号显示,这就是Chrome的Web地址栏的行为方式。 这是代码:

  [DllImport("user32.dll")] static extern bool HideCaret(IntPtr hWnd); private void textBox2_Enter(object sender, EventArgs e) { // Kick off SelectAll asyncronously so that it occurs after Click BeginInvoke((Action)delegate { HideCaret(textBox2.Handle); textBox2.SelectAll(); }); } 

TextBox上的ReadOnly属性设置为true

这个问题的更多答案: C#中的只读文本框

VB.NET代码

 Imports System.Runtime.InteropServices Public Class xxxxxxxxxxxxxxxxxxxxxx  Private Shared Function HideCaret(ByVal hwnd As IntPtr) As Boolean End Function ............... Private Sub txtNotePreview_MouseMove(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNotePreview.MouseMove, txtNotePreview.KeyPress HideCaret(txtNotePreview.Handle) End Sub