在文本框中,如何在单击时阻止显示闪烁的光标?
我在一些论坛上读到过调用特定的api,但是当我在我的代码中尝试它时,显示错误.如果可能,请提供完整的代码用于此目的,并告知我是否存在应执行代码的特定事件.
此文本框是创建用于模拟lan信使的表单窗口的一部分.我正在使用C#.该表单有两个文本框,以便类似于谷歌谈话.希望防止在上部文本框上显示闪烁的光标.
我试过了:
[DllImport("user32")]
private static extern bool HideCaret(IntPtr hWnd);
public void HideCaret() { HideCaret(TextBox1.Handle); }
Run Code Online (Sandbox Code Playgroud)
我收到错误:"无法找到DllImport."
我想MaskedTextBox在控件的点击(或标签)上选择一个a的所有内容,这样他们就可以轻松地替换旧内容.我试着SelectAll()在Enter活动中打电话,但这根本不起作用.
我切换到使用GotFocus事件,这在通过控件进行选项卡时效果很好,但是当我用鼠标点击它时不起作用.我只想在第一次进入/聚焦控件时选择所有内容(后续点击可能用于定位光标以编辑现有文本).
我添加了一个按钮并尝试调用SelectAll()按钮单击事件,但这也没有做任何事情.这是怎么回事?这是一个错误吗?
我怎么能绕过这个?
重现步骤
TextBox,MaskedTextBox和Button到默认窗体Mask将MaskedTextBox上的属性更改为"_____".添加一些事件处理程序:
private void maskedTextBox1_GotFocus(object sender, EventArgs e)
{
Debug.WriteLine("GotFocus");
maskedTextBox1.SelectAll();
}
private void button1_Click(object sender, EventArgs e)
{
Debug.WriteLine("Click");
maskedTextBox1.SelectAll();
}
Run Code Online (Sandbox Code Playgroud)运行程序,将一些数据输入MaskedTextBox,通过控件选项卡返回它.它选择MaskedTextBox的内容.
GotFocus已调用事件,但未选择文本.在Windows窗体应用程序项目中使用.NET 4.0在Visual Studio 2010中测试
为什么这不是TextBox的重复.SelectAll()不适用于TAB
如果您注意到,标题显示"SelectAll不适用于TAB ".在我的情况下,它确实有效Tab,它不适用于鼠标 - 完全相反的情况.该问题的答案是使用该GotFocus事件.我已经在使用这个GotFocus活动,但它不起作用.答案没有回答这个问题.这显然不重复.如果我错了,请在评论中解释.
在Make a WinForms TextBox中,我发现了类似的问题,就像浏览器的地址栏一样
现在我试图通过使它变得通用来修改或使其更加不同.我想对表单中的所有文本框应用相同的操作,而不是每个文本框都有代码...我知道多少个.只要我在表单中添加一个文本框,它就应该采用类似的选择操作.
所以想知道怎么做?
我正在制作一个猜数字游戏,为了方便起见,我想在我的程序中添加一行代码,只需单击一下即可选择文本框中的所有文本。我已经尝试了在这里找到的所有内容以及我在谷歌上找到的其他故障排除网站,但似乎都不起作用,甚至试图强制将焦点放在文本框上。文本框的行为仍然像普通文本框一样,即必须双击才能选择全部。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace randomNumberGuessingGameFourthTry
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void startGame_Click(object sender, EventArgs e)
{
if (min.Text == "" || min.Text == " " || min.Text == "Min")
{
MessageBox.Show("You didn't enter a minimum value of zero or greater so the default value of 0 was set.");
min.Text = "0";
}
if (max.Text == "" || …Run Code Online (Sandbox Code Playgroud)