VB中编写一个华氏摄氏温度之间的转换程序f=9c5+32,c=5(f-32)9在文本框中输入,以回车键激发keypress事件

VB中编写一个华氏摄氏温度之间的转换程序f=9c5+32,c=5(f-32)9在文本框中输入,以回车键激发keypress事件,第1张

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 事件能否提供全局事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9740639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存