有form1 这么个窗体 上面有个文本框
在form1中show出form2,如何使得输入焦点停留在form1中(鼠标点中form2时鼠标焦点仍在Form1中)
有点像屏幕键盘。有答案加多50分,无答案散分,最迟明天结贴。

解决方案 »

  1.   

    你show窗体的时候焦点肯定在新窗口里撒
    你在show窗体的语句后面加上this.focus()看看
      

  2.   

    调用前后同时调用窗体事件中的Activate()或Focus()方法。
      

  3.   

    Form2 f2 = new Form2();
                f2.Show();
                this.textBox1.Focus();
      

  4.   

    你是要让form1显示在最上面吗 this.TopMost = true;??? 还是其他的!
    //这么写form2 永远也的不到焦点拉
    //form1
    Form2 f2 = new Form2();
    f2.Owner = this;
    f2.Show();
    //form2
    Activated 事件
        private void Form2_Activated(object sender, EventArgs e)
        {
          if (this.Owner != null)
          {
            this.Owner.Activate();
          }
        }
      

  5.   

    不是这样啊(鼠标点中form2时鼠标焦点仍在Form1中)
    form2类似于屏幕键盘,将鼠标点击按钮输入传回给form1。
    说白了就是form2不接受焦点,才不会使form1失去焦点
      

  6.   


    这样连form2的窗体上的按钮都用不了了,类似于屏幕键盘的效果
      

  7.   

    开始没明白你的意思吗? --------我发贴的时候没看到你下面的话.-----当点击的时候在转移焦点:例如 当点击一个button的时候在 转移焦点
      

  8.   

    用自定义控件代替Form2,实现类似窗体的功能(可超出Form1窗体显示)。
    控件中用鼠标钩子,必须了解一些API函数。
      

  9.   

    好像不行吧,LZ要是在只想要传送鼠标点击的按钮的话,还是自己写个函数把鼠标在Form2里面点击的内容传回Form1显示吧
      

  10.   


    没有其他方式吗? 这样我与我自己的代码有冲突?而且不实用。api函数的话是哪个?
      

  11.   

    试试 SetForegroundWindow  GetForegroundWindow 这两个函数
      

  12.   

    在win2000以上的操作系统中window增加了一条附加窗口风格WS_EX_NOACTIVATE
    http://topic.csdn.net/t/20051114/14/4391961.html
      

  13.   

    里面讲到的方法是有点问题的。其实添加窗体样式,不必调用API。public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private const int WS_EX_NOACTIVATE = 0x08000000;        /// <summary>
            /// 扩展窗体样式(WS_EX_NOACTIVATE)
            /// </summary>
            protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams createParams = base.CreateParams;
                    createParams.ExStyle = createParams.ExStyle | WS_EX_NOACTIVATE;
                    return createParams;
                }
            }        private const int WM_MOUSEACTIVATE = 0x0021;
            private const int MA_NOACTIVATE = 0x0003;        ///解决只添加窗体样式所存在的问题。
            protected override void WndProc(ref Message m)
            {
                if (m.Msg == WM_MOUSEACTIVATE)
                {
                    m.Result = (IntPtr)MA_NOACTIVATE;//偷龙转凤
                }
                else
                    base.WndProc(ref m);
            }        private void button1_Click(object sender, EventArgs e)
            {
                SendKeys.Send("A");
            }
        }
      

  14.   

    除非用多线程!!要么就只能把form2关闭才会在form1获得焦点