Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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# 按tab键不显示';不要在文本框之间切换_C#_Winforms - Fatal编程技术网

C# 按tab键不显示';不要在文本框之间切换

C# 按tab键不显示';不要在文本框之间切换,c#,winforms,C#,Winforms,我有一个名为“placeholder textbox”的类,它可以充当带有占位符文本的文本框: internal class PlaceholderTextBox : TextBox { private bool isPlaceHolder = true; private bool isPassword; private string _PlaceholderText; private string _InputText; public string P

我有一个名为“placeholder textbox”的类,它可以充当带有占位符文本的文本框:

internal class PlaceholderTextBox : TextBox
{
    private bool isPlaceHolder = true;
    private bool isPassword;
    private string _PlaceholderText;
    private string _InputText;

    public string PlacehoderText
    {
        get { return _PlaceholderText; }
        set { _PlaceholderText = value; setPlaceholder(); }
    }

    public string InputText
    {
        get { return _InputText; }
        set { _InputText = value; }
    }

    public bool IsPassword
    {
        get { return isPassword; }
        set { isPassword = value; }
    }

    private void setPlaceholder()
    {
        if (string.IsNullOrEmpty(this.Text))
        {
            this.Text = PlacehoderText;
            InputText = "";
            this.ForeColor = System.Drawing.Color.Gray;
            isPlaceHolder = true;
            if (isPassword) this.UseSystemPasswordChar = false;
        }
    }

    private void removePlaceHolder()
    {
        if (isPlaceHolder)
        {
            this.Text = "";
            this.ForeColor = System.Drawing.SystemColors.WindowText;
            isPlaceHolder = false;
            if (isPassword) this.UseSystemPasswordChar = true;
        }
    }

    public void resetText()
    {
        isPlaceHolder = true;
        this.Text = null;
        setPlaceholder();
    }

    public PlaceholderTextBox()
    {
        Enter += removePlaceHolder;
        Leave += setPlaceholder;
        TextChanged += addText;
    }

    private void setPlaceholder(object sender, EventArgs e)
    {
        setPlaceholder();
    }

    private void removePlaceHolder(object sender, EventArgs e)
    {
        removePlaceHolder();
    }

    private void addText(object sender, EventArgs e)
    {
        InputText = this.Text;
    }
}
在我的主表单中,我有两个占位符文本框,一个用于“用户名”,另一个用于“密码”,它还具有用于保护输入文本的项目符号封面。我发现的问题是,如果我想使用“Tab”键从密码文本框切换到另一个文本框,它就不起作用。如果它有一些文本,或者如果我想从用户名切换到密码,它可以正常工作,但是如果密码框中没有任何文本,我想切换到用户名,它就不工作了


我完全不知道为什么它不工作,我猜它可能与密码覆盖系统有关。对此问题有何见解?

您是否尝试过设置任何表单的标题?您还必须对每个元素进行设置。与其使用自己的提示横幅(这就是您所谓的“占位符”),为什么不呢?它使用。用户名文本框的tabindex=1,密码的tabindex=2。只要我在没有输入文本的密码文本框中不使用tab键,就可以了。提示文本框就像一个符咒一样工作。非常感谢我们,凯姆!