找回密码
 立即注册

QQ登录

只需一步,快速开始

qimeimeiqi

初级会员

12

主题

66

帖子

242

积分

初级会员

积分
242

微信认证勋章

qimeimeiqi
初级会员   /  发表于:2019-9-25 17:23  /   查看:5289  /  回复:7
5金币
本帖最后由 qimeimeiqi 于 2019-9-26 16:53 编辑

在winforms实行时,textbox中只能填写半角英数和连字符,不能填写其他符号以及全角。
应该如何设定,谢谢。
现在的设定是 this.textBox1.ImeMode = System.Windows.Forms.ImeMode.Disable;
但是这个设定可以屏蔽全角,却不能屏蔽其他符号。
已解决,具体参考评论区的方法总结。




スクリーンショット (62).png

最佳答案

查看完整内容

您好,IMEMode控制不了符号的输入,您要是只允许用户输入某些特定的符号,可以用类似MaskedtextBox的控件,或者监听事件判断用户输入非法自动删除。

7 个回复

倒序浏览
qimeimeiqi
初级会员   /  发表于:2019-9-26 16:55:34
来自 7#
本帖最后由 qimeimeiqi 于 2019-9-27 08:51 编辑

解决方法总结
this.textBox.ImeMode = System.Windows.Forms.ImeMode.Disable;this.textBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.TextBox_KeyPress);

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
          if (!(Char.IsNumber(e.KeyChar)) && ((e.KeyChar < 'A') || (e.KeyChar > 'Z')) && ((e.KeyChar < 'a') || (e.KeyChar > 'z')) && (e.KeyChar != '-')&& (e.KeyChar != (char)8))
               e.Handled = true;         
        }

其中,(e.KeyChar != (char)8)为backspace按钮
回复 使用道具 举报
最佳答案
最佳答案
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-9-25 17:23:34
来自 2#
您好,IMEMode控制不了符号的输入,您要是只允许用户输入某些特定的符号,可以用类似MaskedtextBox的控件,或者监听事件判断用户输入非法自动删除。
回复 使用道具 举报
qimeimeiqi
初级会员   /  发表于:2019-9-26 09:09:04
3#
dexteryao 发表于 2019-9-26 08:45
您好,IMEMode控制不了符号的输入,您要是只允许用户输入某些特定的符号,可以用类似MaskedtextBox的控件, ...

谢谢,我修改了。
回复 使用道具 举报
qimeimeiqi
初级会员   /  发表于:2019-9-26 15:32:10
4#
dexteryao 发表于 2019-9-25 17:23
您好,IMEMode控制不了符号的输入,您要是只允许用户输入某些特定的符号,可以用类似MaskedtextBox的控件, ...

还是用textbox,
请问,如果不要连字符,只输入半角英数的话,需要怎样去做。
我现在用了imemode的alpha,但是它可以输入全角字符。
也用了KeyPress,也没有达到只输入半角英数的效果。
请问还有其他方法吗
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-9-26 16:01:11
5#
本帖最后由 dexteryao 于 2019-9-26 16:02 编辑

您可以参考下类似的代码


  1. private void ForceNumberInput(object sender, KeyPressEventArgs e)
  2. {
  3.       //如果输入的不是数字键,也不是回车键、Backspace键,第一个输入不是负号,则取消该输入
  4.       if (!(Char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)13) && (e.KeyChar != (char)8)&#160;
  5.         && (!((((TextBox)sender).Text == "") && (e.KeyChar == (char)45))))
  6.       {
  7.         e.Handled = true;
  8.       }
  9. }


复制代码
回复 使用道具 举报
qimeimeiqi
初级会员   /  发表于:2019-9-26 16:51:28
6#
dexteryao 发表于 2019-9-26 16:01
您可以参考下类似的代码

谢谢,做出来了。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-9-26 19:34:11
8#
不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部