2016-05-30 32 views
1

这里是:C#检查字符串数据在组合框中displaymember

Datatable dt; 
...... 
....... 
cmbName.DataSource=dt; 
cmbName.ValueMember="ID"; 
cmbName.DisplayMember="Name"; 


private void cmbName_Validating(object sender, CancelEventArgs e) 
{   
    if (cmbName.Text == string.Empty) 
    { 
     MessageBox.Show("select correct name"); 
     e.Cancel = true; 
    } 
    else if (cmbName.Items.Contains(cmbName.Text)) 
    { 
     e.Cancel = false; 
    } 
    else 
    { 
     MessageBox.Show("select correct name"); 
     e.Cancel = true; 
    } 
} 

总是显示 '选择正确的名称'。即使是从下拉列表中选择。请有人建议我!

+0

所以你需要用户不能写,是不是在其项目组合的东西。它是否需要能够完全符合?为什么也不使用下拉属性? – Aimnox

回答

-1

根据你的陈述

如果您cmbname.Text是空的,它显示了消息:

选择正确的名称

当你的cmbname.Text不是空的,然后它再次显示了消息:

select correct n ame

当你从DropDownList中选择时,你必须在else条件中指定你想要的输出作为输出。

+0

它说如果它是空的,它显示味精,如果它不是空的NOR'(cmbName.Items.Contains(cmbName.Text))'它也显示它 – Aimnox

+0

感谢您的评论和原因:else if(cmbName.Items .contains(cmbName.Text)) { e.Cancel = false; }不工作? –

+0

if(cmbName.Text == string.Empty) { MessageBox.Show(“select correct name1”); e.Cancel = true; } 别的 { 如果(cmbName.Items.Contains(cmbName.Text)) { e.Cancel = FALSE; } else { MessageBox.Show(“select correct name2”); e.Cancel = true; } }也没有工作。为什么? –

0

我做了这个代码,这可以帮助别人:

if (Convert.ToInt32(cmbName.SelectedValue) >= 1) 
     { 
      e.Cancel = false; 

     } 
     else 
     { 
      MessageBox.Show("select correct name"); 
      e.Cancel = true; 
     } 
相关问题