Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在第一次单击时聚焦整个文本,并在第二次单击时取消选择(到正常模式)?_C#_Visual Studio_Events_Methods - Fatal编程技术网

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是的,请。你知道吗?谢谢,这个很好用!虽然您必须使用大型代码,但它只是简单的事件。谢谢!