黑马程序员技术交流社区

标题: 关于com控件遇到个BUG,请大家帮我看看 [打印本页]

作者: 追影    时间: 2013-9-23 10:29
标题: 关于com控件遇到个BUG,请大家帮我看看
本帖最后由 追影 于 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.         }
复制代码

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

2.关于你说的再计算器中连续输入符号。你写的计算器是不是 每按一下键 ,textbox 都会显示呢?如果是的额话你就加一个判断,判断text的最后一个字符是不是你的那些运算符。如果是的话 ,禁止在此输入这些运算符,应该是比较好写的。
作者: 七里香    时间: 2013-9-23 17:41
想combox只能输入一个字符?自己把它的maxlength属性设为1不就行了?然后再判定用户输入的是否为加减乘除。{:soso_e100:}
作者: 追影    时间: 2013-9-24 04:01
七里香 发表于 2013-9-23 17:41
想combox只能输入一个字符?自己把它的maxlength属性设为1不就行了?然后再判定用户输入的是否为加减乘除。 ...

这是个办法,谢谢啦,不过还是只能解决现有的问题,如果文本长度不只1呢,像地址之类的.

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

如果是省市地址的话,你可以用模糊查询吧。如果你想实现输入省份的前面的字符然后出现提示的话建议用listbox控件比较好。那样你输入省市前面的字符下面就能显示含有相应字符的省市地址,而具体地址又不是固定的,你怎么把他放在combox里面呢?

作者: 追影    时间: 2013-9-25 06:53
七里香 发表于 2013-9-24 11:12
如果是省市地址的话,你可以用模糊查询吧。如果你想实现输入省份的前面的字符然后出现提示的话建议用list ...

是么,回去看看listcom控件,还有模糊查询没接触过,不过感觉思路应该是这思路,谢啦

作者: 追影    时间: 2013-9-25 06:58
黑色海 发表于 2013-9-24 09:13
comboBox控件有一个selectedIndex属性,你把可能的选项都写好,抓取值就行,这个winfrom入门最后一个视频有 ...

呵呵,只是突然想到的而已,能不能控制用户键盘的输入,只输入对的东西,错误的直接不响应,一个想法而已,以后在其他方面说不定就会做到





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2