Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If IsNumeric(Text1Text) Then
Text2Text = 9 Val(Text1Text) / 5 + 32
Else
MsgBox "请输入数字", vbCritical, "错误"
Text1Text = ""
Text1SetFocus
End If
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If IsNumeric(Text2Text) Then
Text1Text = 5 (Val(Text2Text) - 32) / 9
Else
MsgBox "请输入数字", vbCritical, "错误"
Text2Text = ""
Text2SetFocus
End If
End If
End Sub
eHandled是指示事件是否已经处理完,如果为ture就表示已经处理完不再进行处理了。或者简单来说
if ((eKeyChar <48 || eKeyChar >57) && eKeyChar != 8)
eHandled = true;
就表示这个keypress仅接受数字键以及退格键,或者说仅对这些键做出响应,其它的按键无效。
if ((eKeyChar<48 || eKeyChar >57) 表示的不是0-9间的字符,而是刚好相反,表示的是ascii码小于48或者大于57的非数字字符。如果你要对程序做相应更动,应该是
if (eKeyChar>=48 && eKeyChar <=57)
当然这需要联系程序本身的上下文来进行相应处理。
1)设置窗体属性,如下图
2)对窗体的 KeyDown事件编程
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
//判断是否按下了F4键
if (eKeyCode == KeysF4)
{
MessageBoxShow("你要做什么?");
}
}
程序的话可以给你一个作为参考! 实现了计算结果的小数显示。
//
//扫描显示6位数码管,显示信息为缓冲区的六个“0”
//201787 添加浮点数显示支持
//
#include<reg52h> //头文件定义
#include<stdioh>
#include<intrinsh>
#define uchar unsigned char // 宏定义
#define uint unsigned int
#define KEY P1
uchar code Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,//
0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //00 显示空
uchar disp_buffer[6]={2,0,1,7,0,5} ,buf[10]; //显示缓冲区
uchar flag = 0;
long dat1,dat2;
float temp;
bit keypress = 1,getv = 0;
void p_data(long dat);
void display();
//
//延时子程序,带有输入参数 m
//
void delay(unsigned int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<123;j++)
{;}
}
}
//
//按键扫描程序 4X4
//
uchar key()
{
uchar keytemp , key_h;
KEY = 0xf0;
if((KEY &0xf0)!= 0xf0)
{
keytemp = KEY&0xf0;
KEY = 0x0f; //翻转
key_h = KEY&0x0f;
keytemp = keytemp | key_h;
switch(keytemp)
{
case 0xee: return(0);break;
case 0xed: return(1);break;
case 0xeb: return(2);break;
case 0xe7: return(3);break;
case 0xde: return(4);break;
case 0xdd: return(5);break;
case 0xdb: return(6);break;
case 0xd7: return(7);break;
case 0xbe: return(8);break;
case 0xbd: return(9);break;
case 0xbb: return(10);break;
case 0xb7: return(11);break;
case 0x7e: return(12);break;
case 0x7d: return(13);break;
case 0x7b: return(14);break;
case 0x77: return(15);break;
}
}
return 0xff;
}
void keyscan()
{
uchar getk;
getk = key();
if(getk != 0xff)
{
delay(10);
getk = key();
if(getk != 0xff)
{
if(keypress)
{
keypress = 0;
switch(getk)
{
case 0: //根据按键决定是做哪种运算,并置位getv
getv = 1;
flag = 1;
break;
case 0x0b:
getv = 1;
flag = 2;
break;
case 0x0c:
getv = 1;
flag = 3;
break;
case 0x0d://
flag = 4;
getv = 1;
break;
case 0x0e:
getv = 0;
switch(flag) //按等号键 进行运算,并将结果输出给temp 用于显示
{
case 1:
temp = dat1 + dat2;
break;
case 2:
temp = dat1 - dat2;
break;
case 3:
temp = dat1 dat2;
break;
case 4:
temp = (float)dat1 / (float)dat2;
break;
}
dat1 = 0;
dat2 = 0;
flag = 0;
break;
case 0x0f:
if(!getv)
{
dat1 = dat1/10;;
temp = dat1;
}
else
{
dat2 = dat2/10;
temp = dat2;
}
break;
default:
if(!getv) //根据getv的值判断是第一个数据还是第二个数据!
{
dat1 = dat110 + getk; //将按键值组合成为数据
temp = dat1;
}
else
{
dat2 = dat210 + getk;
temp = dat2;
}
break;
}
}
}
}
else
keypress = 1;
}
//
//填充disp_buffer 浮点数数据处理 转换为整数,并标记小数点位置
//
uchar float_int_dot(float numf)
{
uchar ct,ctn,dotps;
for(ct = 7 ; ct != 0 ; ct--) //初始化打印缓冲区和显示缓冲区
{
buf[ct - 1] = 0;
if(ct - 1 > 0)
disp_buffer[ct - 2] = 16;
}
sprintf(buf,"%f",numf);
for(ct = 7 ,ctn = 5; ct != 0 ; ct--)
{
if(buf[ct-1] == '') //如果是小数点则记录位置,并传递给返回值
{
dotps = 6 - ctn;
disp_buffer[ctn] = 0;
}
else if(buf[ct - 1] != '0')//不等于0 则将ascii转换为数值填充入显示缓冲区,
{
disp_buffer[ctn] = buf[ct - 1] - 0x30;
ctn--;
}
}
return dotps;
}
//
//填充disp_buffer ,数据处理
//
void p_data(long dat)
{
uchar pi;
for(pi = 0 ; pi < 6 ; pi++)
{
if(dat != 0 )
{
disp_buffer[5 - pi] = dat%10;
}
else
disp_buffer[5 - pi] = 16;
dat = dat/10;
}
}
//
//显示子程序
//
void display(uchar flash , uchar count, uchar dot) //dot 代表现实小数点的位置
{
uchar i,temp;
temp = 0x01;
for(i=0;i<6;i++)
{
P2 = temp; //位选
/方法一
if( i == flash - 1)
{
if(ct <50)
P0 = Tab[disp_buffer[i]]; //送显示段码
else
P0 = 0; //送显示段码
}
else
P0 = Tab[disp_buffer[i]]; //送显示段码
/
/方法二/
if(!(flash&0x01))
{
if(count <50)
P0 = Tab[disp_buffer[i]]; //送显示段码
else
P0 = 0; //送显示段码
}
else
P0 = Tab[disp_buffer[i]]; //送显示段码
flash = flash >> 1;
//
if(dot - 1 == 5 - i)
P0 = P0|0x80;
delay(2);
P0 = 0x00; //消隐
temp = _crol_(temp,1);
}
}
//
//主函数
//
void main()
{
uchar dot;
while(1)
{
keyscan();
dot = float_int_dot(temp);
display(0xff,100,dot); //11 001101
}
}
Proteus 仿真图
以上就是关于VB中编写一个华氏摄氏温度之间的转换程序f=9c/5+32,c=5(f-32)/9在文本框中输入,以回车键激发keypress事件全部的内容,包括:VB中编写一个华氏摄氏温度之间的转换程序f=9c/5+32,c=5(f-32)/9在文本框中输入,以回车键激发keypress事件、c#的keypress事件有个问题、C# KeyPress 事件能否提供全局事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)