2013-03-20 42 views
1

我的组合框包含像来自数据库的DBaaaaa,DBbbbbb,Dbccccc,FBaaaaa,FBcccc等值。我想当用户从组合框中选择一个值时,它应该匹配前缀(“DB”,“FB”)和所选值的长度。并且它必须根据匹配模式过滤组合框。如何筛选匹配字符串模式的组合框c#

Regex filter = new Regex("^[a-zA-z][a-zA-z][a-zA-Z0-9]*"); 

例如,如果用户选择DBaaaaa。现在组合框应包含从“DB”及其匹配长度开始的所有值。像DBbbbbb,Dbccccc那样。

如果我只是说它的过滤数据类型,如果有数以千计的记录在数据库中。

+1

cdoes它必须是正则表达式,你能不能只使用这样的: 'var resultSet = list.Where(x => x.StartsWith(selectedItem.Substring(0,2))&& x.Length.Equals(selectedItem.Length));' – 2013-03-20 06:52:22

回答

0

假设你有一个字符串的完整列表某处,你可以在ComboBoxSelectedIndexChanged/SelectedValueChanged事件

事情是处理这个问题:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var comboBox = sender as ComboBox; 
    if (comboBox.SelectedItem != null) 
    { 
     string selectedItem = comboBox.SelectedItem.ToString(); 
     comboBox.Items = myDataSource.Where(x => x.StartsWith(selectedItem.Substring(0, 2)) 
               && x.Length.Equals(selectedItem.Length)); 
    } 
} 
+0

感谢您的想法。 – 2013-03-20 11:32:47

1

由于名誉低,我无法添加评论,所以我必须评论为答案。为什么不创建两个组合框,并且只有在选择第一个字段时才填写第二个。那么你可以在你的代码中做一个简单的if语句。