我有一个ComboBox,AutoCompleteMode设为Suggest.序列中的下一个控件是TextBox.根据ComboBox中所选的项目,TextBoxvisible还是不是visible.此外,不应该输入不包含在ComboBox人列表的元素中的其他文本.所以在离开ComboBox的时候,我判断值为Validating.

private void cb_Validating(object sender, CancelEventArgs e)
{
  if(cb.SelectedValue == null)
  {
    e.Cancel = true;
  }
  tb.Visible = cb.Text.Contains("XX"); // makes TextBox visible/invisible
}

现在的问题是,如果TextBox是看不见的,用户输入ComboBox个字母,然后用键向下移动到使TextBox可见的项目,然后按制表键,焦点将跳过下面的文本框,该文本框变为可见.如何实现在这种情况下不跳过文本框?

推荐答案

实现Validated事件以显示并在满足条件时 Select TextBox.否则,将其隐藏并按Tab键顺序 Select 下一个控件.

private void cb_Validating(object sender, CancelEventArgs e)
{
    e.Cancel = cb.SelectedItem == null;            
}

private void cb_Validated(object sender, EventArgs e)
{
    tb.Visible = cb.Text.Contains("some text");
    if (tb.Visible) tb.Select();
    else SelectNextControl(cb, true, true, true, true);
}

Csharp相关问答推荐

System.Data.SQLite:判断SQLite数据库是否为空(任何表中至少有一行)

如何在Visual Studio中为C# spread操作符设置格式规则?

如何使用C#和Graph API从Azure Directory获取用户详细信息

MongoDB将JS查询转换为C#的问题

如何使用XmlSerializer反序列化字符串数组?

.NET 6控制台应用程序,RabbitMQ消费不工作时,它的程序文件中的S

从c#列表中删除额外的对象&对象&>从ASP.NET WebForm返回json响应

如何将不同类型的扩展参数的javascript函数转换成C#风格?

使用泛型可空类实现接口

如何实现有条件的自定义Json转换器隐藏属性

基于C#方法的EF核心过滤查询(缓冲与流)

在等待OnGetAsync时打开Razor Page显示微调器

EF Core 7-忽略模型绑定中的虚拟属性

Autofac -动态实例化:手动传递构造函数

为什么Visual Studio 2022建议IDE0251将我的方法设置为只读?

这是T自身的布尔表达式是什么意思?

当我在Git中暂存文件更改时,它们会消失

从列表中跳过和获取条目的优雅方式

方法加载时出现类型加载异常

C#如何替换两个XML元素值?