1

如果我的 TextBox_Validating 中有这些行,则 TextBox 上的制表位将触发两次:

((TextBox)sender).AutoCompleteCustomSource.AddRange(new string[]
{
    ((TextBox)sender).Text,
});

但是,如果删除 Tabstop 上方的行可以正常工作并且只触发一次?

这是整个功能:

 private void TextBox_Validating(object sender, EventArgs e)
    {
        if (!((TextBox)sender).AutoCompleteCustomSource.Contains(((TextBox)sender).Text) && ((TextBox)sender).TextLength > 0)
        {
            ((TextBox)sender).AutoCompleteCustomSource.AddRange(new string[]
            {
               ((TextBox)sender).Text,
            });

            SaveHistoryTextBox(((TextBox)sender));
        }
    }
4

1 回答 1

0

好的,我找到了解决方法..

        private void TextBox_Validating(object sender, EventArgs e)
    {
        if (!((TextBox)sender).AutoCompleteCustomSource.Contains(((TextBox)sender).Text) && ((TextBox)sender).TextLength > 0)
        {
            ((TextBox)sender).AutoCompleteCustomSource.AddRange(new string[]
            {
               ((TextBox)sender).Text,
            });

            SaveHistoryTextBox(((TextBox)sender));

            Control p;
            p = ((TextBox)sender).Parent;
            p.SelectNextControl(ActiveControl, true, true, true, true);
        }
    }

使用 p.SelectNextControl 我手动将焦点设置到下一个控件。所以我的制表位正在工作。

于 2018-07-12T14:08:25.637 回答