我在程序里添加了如下的语句用来测试窗体是否SetFocus了
        void Form1_MouseDown(object sender, MouseEventArgs e)
        {
           MessageBox.Show(this.Focus().ToString ());
        }
如果是一个空窗体,或者窗体中含有PictureBox的时候,点击窗体显示是true
Form1 form=new form();
form.show();
form.setfocus();
如上是form的生成代码。但是如果在空窗体中加入button,这个我是在Form1类中用InitializeComponent()调用C#自带的生成控件代码的
然后点击窗体显示就一直是false,焦点一直在Button上不解
求问

解决方案 »

  1.   

    button 是否设置为默认按钮可以放其它控件测试 一下是不是有同样的问题??
      

  2.   

    不好意思 不是setfocus 是focus
    form.focus()
    如果换成picturebox控件 则是true
    如果是button控件 则是false
      

  3.   

    尽管不知道为什么button总是被聚焦 
    但是我将form窗体的属性keypreview改成true 也就是窗体总是在control接收key之前接收key
    这样就解决了窗体不能接收keypress的问题
      

  4.   

    Button和picturebox的原理不太一样,前者有点特殊
    你试试
    把Button的tabindex设置成界面最大者
      

  5.   

    设置成最大的也没有用我要实现的是让窗体接收键盘事件
    加了一个按钮之后窗体focus了却还是不能接收
    然后我只能将窗体的keypreview改成true才能接收
    很奇怪为什么添加按钮后,如果keypreview=false, form.focus()了却还是不能接收键盘事件,而添加picturebox却可以