微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight---TextBox只能输入数字或小数 屏蔽中文输入和非法粘贴: KeyDown事件处理方法

  private   void  txtRoomNum_KeyDown( object  sender, KeyEventArgs e)
{
    TextBox txt 
=  sender  as  TextBox;
    
// 屏蔽非法按键,只能输入整数
     if  ((e.Key  >=  Key.NumPad0  &&  e.Key  <=  Key.NumPad9))
    {
        e.Handled 
=   false ;
    }
    
else
    {
        e.Handled 
=   true ;
    }
}

private   void  txtRoomArea_KeyDown( object  sender, KeyEventArgs e)
{
    TextBox txt 
=  sender  as  TextBox;
    
// 屏蔽非法按键,只能输入小数
     if  ((e.Key  >=  Key.NumPad0  &&  e.Key  <=  Key.NumPad9)  ||  e.Key  ==  Key.Decimal)
    {
        
if  (txt.Text.Contains( " . " &&  e.Key  ==  Key.Decimal)
        {
            e.Handled 
=   true ;
            
return ;
        }
        e.Handled 
=   false ;
    }
    
else
    {
        e.Handled 
=   true ;
    }

}

 

 

参考一:
以下实现TextBox只能输入小数并且屏蔽中文输入和非法粘贴:
说明:以下实现均在Framework 3.0平台下

为TextBox加两个事件:TextChanged和KeyDown事件,具体如下:
KeyDown事件:

 1

private   void  TextBox_KeyDown( object  sender, System.Windows.Input.KeyEventArgs e)
 2

        

{
 3

            TextBox txt 
= sender as TextBox;
 4


 5

             
//屏蔽非法按键
 6

            if ((e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || e.Key == Key.Decimal)
 7

            

{
 8

                
if (txt.Text.Contains("."&& e.Key == Key.Decimal)
 9

                

{
10

                    e.Handled 
= true;
11

                    
return;
12

                }

13

                e.Handled 
= false;
14

            }

15

            
else if (((e.Key >= Key.D0 && e.Key <= Key.D9) || e.Key == Key.OemPeriod) && e.KeyboardDevice.Modifiers != ModifierKeys.Shift)
16

            

{
17

                
if (txt.Text.Contains("."&& e.Key == Key.OemPeriod)
18

                

{
19

                    e.Handled 
= true;
20

                    
return;
21

                }

22

                e.Handled 
= false;
23

            }

24

            
else
25

            

{
26

                e.Handled 
= true;
27

            }

28

        }

29


30

TextChanged事件
 1

private   void  TextBox_TextChanged( object  sender, TextChangedEventArgs e)
 2

        

{
 3

            
//屏蔽中文输入和粘贴输入
 4

            TextBox textBox = sender as TextBox;
 5

            TextChange[] change 
= new TextChange[e.Changes.Count];
 6

            e.Changes.copyTo(change, 
0);
 7


 8

            
int offset = change[0].Offset;
 9

            
if (change[0].AddedLength > 0)
10

            

{
11

                
double num = 0;
12

                
if (!Double.TryParse(textBox.Text, out num))
13

                

{
14

                    textBox.Text 
= textBox.Text.Remove(offset, change[0].AddedLength);
15

                    textBox.Select(offset, 
0);
16

                }

17

            }

18

        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐