C# ComboBox实时模糊查询,解决'数据源中没有 DataRow'错误

在使用C#开发应用程序时,我们经常需要使用ComboBox控件来提供下拉列表供用户选择。为了提升用户体验,我们希望实现实时模糊查询功能,即根据用户输入的文本动态更新下拉列表内容。

然而,在使用CopyToDataTable方法实现实时模糊查询时,你可能会遇到'数据源中没有 DataRow'的错误。这是因为在输入内容进行模糊查询时,可能没有匹配的数据行导致无法复制到新的DataTable中。

为了解决这个问题,我们可以采用另一种方法来实现ComboBox的实时模糊查询功能,并避免该错误的发生。

步骤如下:

  1. 添加ComboBox控件: 在窗体中添加一个ComboBox控件,并将其DropDownStyle属性设置为DropDown,使其可编辑。

  2. 创建并填充DataTable: 创建一个DataTable,并添加需要绑定的数据。

    
    // 添加数据到DataTable   dataTable.Rows.Add('Apple');   dataTable.Rows.Add('Banana');   dataTable.Rows.Add('Orange');   dataTable.Rows.Add('Peach');   dataTable.Rows.Add('Pear');   dataTable.Rows.Add('Grapes');   ```
    
    
  3. 绑定数据源: 将创建的DataTable绑定到ComboBox的DataSource属性上。

    csharp comboBox1.DataSource = dataTable; comboBox1.DisplayMember = 'Name';

  4. 实现实时模糊查询: 在ComboBox的TextChanged事件中,实现实时模糊查询功能。

    
        var filteredData = dataTable.AsEnumerable()           .Where(row => row.Field<string>('Name')           .ToLower()           .Contains(searchText.ToLower()))           .ToList();
    
        if (filteredData.Count > 0)       {           comboBox1.DataSource = filteredData;           comboBox1.DisplayMember = 'Name';           comboBox1.DroppedDown = true; // 展开下拉菜单显示结果           comboBox1.SelectionStart = searchText.Length; // 将光标移动到文本末尾           comboBox1.SelectionLength = 0; // 清除选择内容       }       else       {           comboBox1.DataSource = null; // 清空数据源           comboBox1.Text = searchText; // 保留输入的文本           comboBox1.DroppedDown = false; // 关闭下拉菜单       }   }   ```
    
    
  5. 处理回车键: 为ComboBox的KeyUp事件添加一个处理程序,以便在按下回车键时将所选结果显示在ComboBox中。

    csharp private void comboBox1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (comboBox1.Items.Count > 0) { comboBox1.Text = comboBox1.Items[0].ToString(); } comboBox1.DroppedDown = false; // 关闭下拉菜单 comboBox1.SelectionStart = comboBox1.Text.Length; // 将光标移动到文本末尾 comboBox1.SelectionLength = 0; // 清除选择内容 } }

总结:

通过以上步骤,我们实现了C# ComboBox的实时模糊查询功能,并解决了'数据源中没有 DataRow'错误。这种方法可以有效避免错误的发生,并为用户提供更流畅、高效的操作体验。

C# ComboBox实时模糊查询,解决'数据源中没有 DataRow'错误

原文地址: https://www.cveoy.top/t/topic/RrI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录