在文本框中全选,除非再次单击.c#困惑

本文关键字:单击 困惑 文本 全选 | 更新日期: 2023-09-27 18:04:37

我想让它在我的程序中,如果你点击一个文本框,它会选择它。如果你再次点击它,它会全部取消选择。

我已经试过这样做了。

 private void url_MouseDown(object sender, MouseEventArgs e)
    {
        url.ReadOnly = false;
        url.SelectAll();
        url.DeselectAll();
    }

我知道url.DeselectAll();在错误的地方。任何帮助吗?提前感谢!

在文本框中全选,除非再次单击.c#困惑

单击文本框本身会清除选中的内容,因此您必须这样做;

    bool selected;
    private void url_MouseDown(object sender, MouseEventArgs e)
    {
        url.ReadOnly = false;
        if (!selected)
        {
            selected = true;
            url.SelectAll();
        }
        else
        {
            selected = false;
            url.DeselectAll();
        }
    }

当前代码首先调用

url.SelectAll();
然后立即调用
url.DeselectAll();

请检查您要切换的项目的当前状态。从问题中我不清楚这到底是什么,所以在伪代码中:

private bool isSelected = false;
private void url_MouseDown(object sender, MouseEventArgs e)
{
    url.ReadOnly = false;
    if (isSelected)
    {
        url.DeselectAll();
    } 
    else 
    {
        url.SelectAll();
    }
    isSelected = !isSelected;
}

IsDeselected替换为检查当前状态是否被取消选择的东西

你的代码总是选择然后再取消选择,所以你的文本总是在鼠标下移后取消选择。

试试这个:

private void url_MouseDown(object sender, MouseEventArgs e)
{
    url.ReadOnly = false;
    if (url.SelectedText.Length < url.Text.Length) {
        url.SelectAll();
    } else {
        url.DeselectAll();
    }
}