C# 如何在第一次单击时聚焦整个文本,并在第二次单击时取消选择(到正常模式)?
只是在一个文本框上 我已经有了这个事件方法,它适用于所有焦点:C# 如何在第一次单击时聚焦整个文本,并在第二次单击时取消选择(到正常模式)?,c#,visual-studio,events,methods,C#,Visual Studio,Events,Methods,只是在一个文本框上 我已经有了这个事件方法,它适用于所有焦点: private void DoFocusEverything(object sender, MouseEventArgs e) { TextBox textBox = (TextBox)sender; textBox.SelectAll(); } 我怎样才能修改它,在第二、第三、第四次取消选择。。。单击?代码用于表单上的简单文本框 它使用clicksBeforeNormal变量来计算
private void DoFocusEverything(object sender, MouseEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.SelectAll();
}
我怎样才能修改它,在第二、第三、第四次取消选择。。。单击?代码用于表单上的简单文本框 它使用
clicksBeforeNormal
变量来计算鼠标按下事件被触发的次数。
textBox1\u MouseDown
这相当于您的DoFocusEverything
事件
int clicksBeforeNormal = 0;
private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
TextBox textBox = (TextBox)sender;
if (clicksBeforeNormal < 1)
textBox.SelectAll();
//ignore the click count on empty text box
if (textBox.Text.Length > 0)
clicksBeforeNormal++;
}
private void textBox1_Leave(object sender, EventArgs e)
{
clicksBeforeNormal = 0;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
clicksBeforeNormal = 0;
}
int单击前正态=0;
私有void textBox1\u MouseDown(对象发送方,MouseEventArgs e)
{
TextBox TextBox=(TextBox)发送方;
如果(单击“正常值前<1”)
textBox.SelectAll();
//忽略空文本框上的单击计数
如果(textBox.Text.Length>0)
单击前正规++;
}
私有无效文本框1_Leave(对象发送方,事件参数e)
{
单击前正态=0;
}
私有void Form1\u MouseDown(对象发送方,MouseEventArgs e)
{
单击前正态=0;
}
当在窗体Form1\u MouseDown
上的文本框外单击时,或者当文本框不是窗体textBox1\u Leave
上的活动控件时,clicksBeforeNormal
将重置
第一次单击时,如果文本框为空,则不考虑计数。
如果文本框中有一些文本,则第一次单击时将选中所有文本。随后的任何单击都将使文本框恢复正常
如果(textBox.SelectionLength==textBox.Text.Length)
?如果有效,我会吃砖头,让我测试一下@Sinatr不起作用,它不会触发第一个SelectAll,因为选择长度已经为0:DDo您想使用相同的事件吗?@MaciejLos是的,请。你知道吗?谢谢,这个很好用!虽然您必须使用大型代码,但它只是简单的事件。谢谢!