如题:
在工作中我遇到两种怀况下会出现这样的情况:
1. 在一个MdiChild窗体(假设为A窗体)中有几个TextBox和几个按钮,其中一个按钮的Click事件是显示另一个MdiChild窗体(假设为B窗体)的.当点击该按钮显示B窗体后,不关闭B窗体,把焦点回到A窗体中的TextBox中,如果按回车,会调用按钮的Click事件!! TextBox根本就捕捉不到回车键. (TextBox的回车是实现焦点跳转的).这种情况大家都可以写个很简单的代码测试一下就知道了.2.在一个MdiChild窗体(假设为A窗体)中有几个TextBox和几个按钮,其中一个按钮的Click事件是检查窗体中数据是否完整以及保存数据的,如果有栏位的值不符合要求,则给予提示且不让保存.出现提示后,把焦点转移到相应的TextBox中,录入正确的数据后回车,它有时会响应按钮的Click事件,但同样的操作在重新打开窗体后就不会了.当然这样的情况很少遇到...为什么会出现这样的情况?难道又是.net的Bug. 我发觉.net的Bug多多...

解决方案 »

  1.   

    1.
    我测试过了,没有问题。
    textbox的回车好像没有焦点跳转的吧?除非是自己写的textbox。
      

  2.   

    可以捕捉到的吧, 
    TextBox t=new TextBox();
    t.KeyDown+=new KeyEventHandler(OnTxtBoxKeyPress);protected void OnTxtBoxKeyPress(object sender, KeyPressEventArgs e)
    {

    if (e.KeyChar == '\r' && textBox.Text.Length > 0)
    {


    textBox.Clear();
    e.Handled = true;
    }
    }
      

  3.   

    e.KeyChar == '\r' 就是回车了
      

  4.   

    2。
    测试过没有问题。应该是你自己代码的问题,再检查一下。有什么问题出现老是认为是.Net的Bug,多查查自己的程序。
    现在的bug贴一天比一天多。下回直接发给微软得了,不要发在这了。
      

  5.   

    textbox的焦点跳转是自己写的,功能很简单,就是发送一个tab键.
    你们用代码测试过了吗? A,B两个窗体都是MdiChild窗体哦...
    显示B窗体后,回到A窗体,在TextBox中按回车根本就不触发keydown事件!!!感觉焦点在按钮上似的,但输入可见字符是可以的
      

  6.   

    你把代码发给我看看,觉的还是你的代码有问题,不是.Net的问题。
    qq:3081309。
      

  7.   

    To:panda2fw2(我爱Monkey) 第二种情况只是偶尔碰到。你测试过第一种情况吗?代码很简单,二个TextBox,两个按钮
      

  8.   

    我贴上部份代码吧.用三个Form就可以测试了.
    Form1为主窗体,Form2,Form3为子窗体,其中Form3只是个空窗体而已.在Form2中放两个Textbox和一个Button.这个Button的Click事件上写上下面的代码:
    private void button1_Click(object sender, System.EventArgs e)
    {
       for(int i =0;i<this.MdiParent.MdiChildren.Length;i++)
       {
          if(this.MdiParent.MdiChildren[i].Name == "Form3")
         {
    this.MdiParent.MdiChildren[i].Show();
    this.MdiParent.MdiChildren[i].Activate();
    return;
          }
       }
       Form3 f = new Form3();
       f.Name = "Form3";
       f.MdiParent = this.MdiParent;
       f.Show();
    }
    很简单的代码...在不关闭Form3的情况下,回到Form2的文本框中按回车,你们测试一下会出现什么样的情况,可以查看它是否有触发文本框的Keydown事件?
      

  9.   

    把Form的AcceptButton设置为了那个按钮了吧
      

  10.   

    To:cpio(就这么简单) :
    这个当然没有设置啦....
    其实测试代码很简单啊,大家可以试一下.Copy我上面的代码,两分钟就可以测试出来了
      

  11.   

    我估计是设定了Form.AcceptButton 属性
      

  12.   

    你加了 form 的 acceptbutton 吧 ~~~
      

  13.   

    同意,可能是设置了AcceptButton
      

  14.   

    我再一次声明:我没有设窗体的AcceptButton,窗体本来就默认不设置AcceptButton的.
    麻烦各位用我上面的代码测试一下,简单得不能再简单的代码了,花个两三分钟就可以测试了
      

  15.   


    不可能是微软的问题。。偶们为了实现这个功能——输入框回车等同按钮单击——都是人工写代码的!
    写了N处,绝不可能是微软的bug(假如是那也是画蛇添足一类的吧)di!
      

  16.   

    经过偶得测试,有如下结论://情况1 
    if 全部textbox.tabindex<button1.tablindex
     min tabindex 的textbox keyenter 会造成form3 show
    //2
    else if 全部textbox.tabindex<button1.tablindex
     min tabindex 的textbox keyenter 会造成form3 show
    //3
    else 
    米有任何textbox keyenter 会操成form3 show
    ================
    菜鸟的报告完毕。。吼吼。。
      

  17.   

    不假,呵呵,大家认为不可能是.NET的BUG的人为什么不试试而在那里尽说空话呢?楼主不错!
      

  18.   

    多谢mumuliang(苏杭|ADO.NET/ASP.NET/C#/学习中),hainang1234(鼠·神·泪) 的支持.都说了这个测试很简单.
    To:sfanpu(Erick Shuai),你做什么样的测试?注意了,是MDIChild窗体哦....
      

  19.   

    我这是连续三次回复了.
    帮我UP一下UP有分的哦....