找回密码
 立即注册

QQ登录

只需一步,快速开始

sinicom

中级会员

13

主题

34

帖子

748

积分

中级会员

积分
748

活字格认证

sinicom
中级会员   /  发表于:2011-8-3 10:21  /   查看:8163  /  回复:9
VB.Net     Spread中,单元格入力,如何控制只能入力“R”,“D”,和delete,Enter key

9 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 12:19:00
沙发
如果只是输入固定的“R”和“D",你可以使用ComboBox,ComboBox中有“空白项”,“R”和“D”
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-3 13:34:00
板凳
按照要求,不能使用ComboBox,如果就是普通的单元格,该如何设置呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 14:33:00
地板

回复 3# sinicom 的帖子

你看以下代码是否满足你的需求,只能输入R和Q中的的一个字符

  1.             FarPoint.Win.Spread.CellType.RegularExpressionCellType regexcell = new FarPoint.Win.Spread.CellType.RegularExpressionCellType();
  2.             regexcell.RegularExpression = "^R$|^Q$";
  3.             fpSpread1.ActiveSheet.Cells[0, 0].CellType = regexcell;
复制代码
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-3 15:33:00
5#
使用上述办法,可以入力“RQ”以外的字符,在Enter之后再清除。
不好意思,请问一下,有没有办法使得R,Q以外的字符直接无法入力呢?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 15:44:00
6#
因为在输入状态下拿不到KeyDown事件,所以,无法在输入的时候就控制
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-3 16:27:00
7#
这样啊,谢谢谢谢。。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-3 16:57:00
8#
八客气  
回复 使用道具 举报
sinicom
中级会员   /  发表于:2011-8-5 10:48:00
9#
问一下,在单元格中入力时候,只能入力a,且最长只能入力一个a,该如何设置呢
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-5 11:39:00
10#

回复 9# sinicom 的帖子

Spread中能够设置每个单元格能够显示的字符长度,但是没有提供能够输入字符的的限制,所以需要自己添加一些代码来实现限制用户输入的功能:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             TextCellType tc = new TextCellType();
  4.             //设置单元格能够显示的字符长度
  5.             tc.MaxLength = 1;

  6.             this.fpSpread1.ActiveSheet.Columns[0].CellType = tc;
  7.         }

  8.         private void fpSpread1_EditModeOn(object sender, EventArgs e)
  9.         {
  10.             if (fpSpread1.Sheets[0].ActiveRowIndex == 0)
  11.             {
  12.                 GeneralEditor geditor = ((GeneralEditor)(fpSpread1.EditingControl));
  13.                 //在进入编辑模式时对输入的字符进行检查
  14.                 geditor.KeyPress -= new KeyPressEventHandler(geditor_KeyPress);
  15.                 geditor.KeyPress += new KeyPressEventHandler(geditor_KeyPress);
  16.             }
  17.         }

  18.         void geditor_KeyPress(object sender, KeyPressEventArgs e)
  19.         {
  20.             if (e.KeyChar != 'A' && e.KeyChar != 'a' && e.KeyChar != '\b')
  21.             {
  22.                 e.Handled = true;
  23.             }
  24.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部