Как отключить курсор в текстовом поле?
Есть ли способ отключить курсор в текстовом поле, не задав свойство Enable to false?
Я пытался использовать свойство ReadOnly, но, несмотря на то, что я не могу писать в текстовом поле, курсор появляется, если я нажимаю текстовое поле. Итак, есть ли способ избавиться от этого курсора permamently?
Ответы
Ответ 1
В С# вы можете использовать следующее текстовое поле только для чтения:
public class ReadOnlyTextBox : TextBox
{
[DllImport("user32.dll")]
static extern bool HideCaret(IntPtr hWnd);
public ReadOnlyTextBox()
{
this.ReadOnly = true;
this.BackColor = Color.White;
this.GotFocus += TextBoxGotFocus;
this.Cursor = Cursors.Arrow; // mouse cursor like in other controls
}
private void TextBoxGotFocus(object sender, EventArgs args)
{
HideCaret(this.Handle);
}
}
Ответ 2
Вместо этого вы можете использовать Label
. Когда в дизайнере вы устанавливаете BorderStyle = Fixed3D
, BackColor = Window
и AutoSize = False
, он очень похож на TextBox.
Однако курсор в TextBox предоставляется так, чтобы пользователь мог прокручивать текст, когда он длиннее, чем поле. Вы потеряете эту функциональность с помощью метки, если вы не уверены, что она всегда будет соответствовать. Кроме этого, невозможно удалить курсор из текстового поля.
Ответ 3
В С# вы можете отключить курсор в текстовом поле, временно отключив его, а затем снова включив текстовое поле, когда оно получает фокус. Обратите внимание, что нет необходимости делать текстовое поле только для чтения, если использовать этот метод. Например:
private void TextBox_Enter(object sender, EventArgs e)
{
TextBox.Enabled = false;
TextBox.Enabled = true;
}
Ответ 4
если вы поместите функцию hideCaret внутри события Textchange, это решит проблему.
[DllImport("user32.dll")]
static extern bool HideCaret(IntPtr hWnd);
private void textBox1_TextChanged(object sender, EventArgs e)
{
HideCaret(textBox1.Handle);
}
Ответ 5
Вы можете установить его программно.
textBox1.Cursor = Cursors.Arrow;
Ответ 6
вы можете использовать свойство RightToLeft текстового поля, установить его в true, вы не избавитесь от курсора, но он будет исправлен в правом углу и не будет отображаться автоматически после каждого текста вы вводите текстовое поле. Я использовал это для разработки приложения, такого как калькулятор Windows.