我用vb 做了一个简单的计算器 + - * / ^2 基本功能可以实现..但是只基于鼠标单击操作..
在我给里面添加 键盘输入时遇到个问题..(暂时只加了键盘 “1”的输入 )当我打开程序时,第一次按1键没有任何反映.鼠标点击过cmdn_n1后,这时候键盘输入才有效...不知道问题所在
完整程序地址 http://free.ys168.com/?myjie  0723文件中.(因为在网吧提问,最好打开前查查毒..)
另外 程序中有任何错误.不好或不适当的地方请您指出..谢谢
实在是没有找到这里上传文件的地方...麻烦您了

解决方案 »

  1.   

    你的消息接受控件是哪个?一般设计成一个输入框加一些按钮,在输入框的KeyPress事件里做处理,每次按钮的onclick最后执行输入框.setfocus
      

  2.   

    Private Sub Command1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 49 Then
        Me.Text1 = 1
    End IfEnd Sub
      

  3.   

    开阔思路!
    开发小应用来练手之前请仔细观察同类软件,MS的计算器就是好例子,当你按下某一数字键时你会发现它对应的按钮也有一个点击的动作,所以你的问题就很简单了,只要在窗体范围检测键盘动作,比如检测到的键是1,那么你就直接调用在你用MOUSE点1时的处理过程,因为你说过你的MOUSECLICK操作是一切OK的。简单吧。代码重用很重要啊!
      

  4.   

    我用的是一个 标签(显示) 和 按钮 键盘输入部分:
    Private Sub CmdN_1_KeyPress(KeyAscii As Integer)
        If KeyAscii = 49 Then
            If FLAG1 = 1 Then X = ""
            If FLAG = 0 Then
                X = X & 1
                Lbl_Show.Caption = X
            Else
                Y = Y & 1
                Lbl_Show.Caption = Y
            End If
        End If
    End Sub  '1 键盘
    -------------------------------------------------
    模块:
    Public X As String             '保存第一个数
    Public Y As String             '保存第二个数
    Public Z As Double              '保存运算结果
    Public FLAG As Integer         '用于"+ - * / % ^2"标记 初始值为0
    Public FLAG1 As Integer        '用于 "=" 的标记 初始值为0
    -------------------------------------------------
    但是,正我我发贴是说的 第一次按键盘 1 键时,没有任何反映,当我用鼠标单击过 按钮1 时,这时候键盘的1 键才可以有反映....上面说的“按下某一数字键时你会发现它对应的按钮也有一个点击的动作”,我也发现这个问题了,我开始想的就是,当我发现键盘有输入是,执行鼠标单击事件..但是我不知道如何实现,我刚刚接触的vb.实在是不知道如何实现...
      

  5.   

    楼上 的 
    Private Sub Command1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 49 Then
        Me.Text1 = 1
    End IfEnd Sub
    这段和我这段一个意思吧....为什么我的第一次识别不了呢?
      

  6.   

    将Command1_KeyPress下面的事件以及所有的按钮下的KeyPress事件下的代码全部移到Form_KeyPress下面去设置Form的KeyPreview属性为True即可
      

  7.   

    哦,我大概明白问题所在了...
    因为我在CmdN_1_KeyPress中 添加的代码...
    如果是放在Form_KeyPress下应该就好了...大概是这样了
    明天我试试,现在在网吧,还有保护卡,安装完了老师提示重起才可以用vb  我郁闷死....
    很感谢上楼...
      

  8.   

    呵呵 我再说一次谢谢啦..针对所有人的哦
    楼上的伙计,我打不开你传的,缺少.dll文件我中午的时候把键盘输入+进去啦,但是我想把敲击-键盘回车键是 等同于“=”,
       if KeyAscii = 61 Then Call CmdS_Amount_Click
       if KeyAscii = 13 Then Call CmdS_Amount_Click  
    我觉得,第一行是键盘“=”,第二行是键盘“enter”,可是当我输入的时候是这样的:
    8 + 8 = 16 
    当我输入 回车的时却是 168
    再回车 就是1688
    16888
    .
    .
    .
    这是为嘛?.......
      

  9.   

    郁闷~计算器开发有几个主要的问题:
          1:关于数字的有效性认证(比如除数不能为0,负数不能开方等等)
          2:关于小数点的判断(一个数内不能有两个以上小数点)
          3:关于算法的问题(数字是否溢出?)
    干脆我给个源代码你得了~自己写的~没有任何BUG