A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 追影 中级黑马   /  2013-9-23 10:29  /  1722 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 追影 于 2013-9-25 07:25 编辑

  winform下的comboBox控件的DropDownStyle的属性默认为DropDown,我觉得是有道理的,如果下拉中内容很多,用户也可以直接输入,但问题是怎么控制用户输入的是否正确,所以可以用comboBox的KeyPress事件来控制.比如四则运算器中我只让用户输入加减乘除.可这有个问题,就是用户可以输多个加减乘除.
  1.   private void com1_KeyPress(object sender, KeyPressEventArgs e)
  2.         {
  3.             //com1.Text.Length,本来我想控制字符串长度为1,可是Length是只读的
  4.             if (e.KeyChar == '+')
  5.                 //这里我想用com1.Text.IndexOf(".") == -1来控制,不过还是不行,
  6.                 //不知道什么问题
  7.                 e.Handled = false;
  8.             else if (e.KeyChar == '-')
  9.                 e.Handled = false;
  10.             else if (e.KeyChar == '*')
  11.                 e.Handled = false;
  12.             else if (e.KeyChar == '/')
  13.                 e.Handled = false;
  14.             else if (e.KeyChar == 8)
  15.                 e.Handled = false;
  16.             else
  17.                 e.Handled = true;
  18.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
曹伟 + 1

查看全部评分

7 个回复

倒序浏览
1.关于你说的控制用户输入 ,再combobox中。第一 你把下拉选项都给写齐 然后把这些选项设置为只读的,不允许用户写入。但是这种河南保证你所给的选项都是用户需要的。二就是,考虑下你的选项内容能否用正则表达式来验证呢 ?不知道你写的什么东西。所以只是建议。

2.关于你说的再计算器中连续输入符号。你写的计算器是不是 每按一下键 ,textbox 都会显示呢?如果是的额话你就加一个判断,判断text的最后一个字符是不是你的那些运算符。如果是的话 ,禁止在此输入这些运算符,应该是比较好写的。

评分

参与人数 1技术分 +1 收起 理由
曹伟 + 1

查看全部评分

回复 使用道具 举报
想combox只能输入一个字符?自己把它的maxlength属性设为1不就行了?然后再判定用户输入的是否为加减乘除。{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
曹伟 + 1

查看全部评分

回复 使用道具 举报
七里香 发表于 2013-9-23 17:41
想combox只能输入一个字符?自己把它的maxlength属性设为1不就行了?然后再判定用户输入的是否为加减乘除。 ...

这是个办法,谢谢啦,不过还是只能解决现有的问题,如果文本长度不只1呢,像地址之类的.
回复 使用道具 举报
comboBox控件有一个selectedIndex属性,你把可能的选项都写好,抓取值就行,这个winfrom入门最后一个视频有提到。
不过计算器上,我还是建议写成按钮,别无选择
回复 使用道具 举报
追影 发表于 2013-9-24 04:01
这是个办法,谢谢啦,不过还是只能解决现有的问题,如果文本长度不只1呢,像地址之类的.
...

如果是省市地址的话,你可以用模糊查询吧。如果你想实现输入省份的前面的字符然后出现提示的话建议用listbox控件比较好。那样你输入省市前面的字符下面就能显示含有相应字符的省市地址,而具体地址又不是固定的,你怎么把他放在combox里面呢?
回复 使用道具 举报
追影 中级黑马 2013-9-25 06:53:59
7#
七里香 发表于 2013-9-24 11:12
如果是省市地址的话,你可以用模糊查询吧。如果你想实现输入省份的前面的字符然后出现提示的话建议用list ...

是么,回去看看listcom控件,还有模糊查询没接触过,不过感觉思路应该是这思路,谢啦
回复 使用道具 举报
追影 中级黑马 2013-9-25 06:58:40
8#
黑色海 发表于 2013-9-24 09:13
comboBox控件有一个selectedIndex属性,你把可能的选项都写好,抓取值就行,这个winfrom入门最后一个视频有 ...

呵呵,只是突然想到的而已,能不能控制用户键盘的输入,只输入对的东西,错误的直接不响应,一个想法而已,以后在其他方面说不定就会做到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马