谢谢大家我遇到一个问题,我响应TextBox的OnGotFocus事件,弹出一个模态对话框。但关闭这个对话框后,焦点又回到TextBox上。请问,如何能让textBox不自动获取焦点,或者调用函数强制让它失去焦点呢?谢谢

解决方案 »

  1.   

    谢谢,可问题是,考虑到只有一个TextBox的情况呢
      

  2.   


    /// <summary> 
    /// 設置控件焦點 
    /// </summary> 
    /// <param name="page">要執行腳本的頁面,一般為本頁 This</param> 
    /// <param name="eventMessage">控件ID</param> public static void SetFocus(System.Web.UI.Page page,string control_id) 

    string str_eventMessage="window.document.all."+control_id+".blur()"; 
    page.RegisterStartupScript("ss","<script id=clientEventHandlersJS language=javascript>" +str_eventMessage+ "</script>"); 
    }   //調用方法 
    SetFocus(this,"control_id");
      

  3.   

    嗯,谢谢楼上啊,但我的是windows form程序,不是asp.net的,现在正郁闷ing
      

  4.   

    用这个属性试试
    this.textBox1.Capture=false;
      

  5.   

    谢谢~~
    我试了,我写的是
    this.textBox1.Capture = true; //false我也试了
    然后第一次运行时,它就真的没有获得焦点啦~~这正是我想要的~~但是,把弹出的对话框关闭后,它还是获取焦点了 private void textBox1_GotFocus(object sender, System.EventArgs e)
    {
    MessageBox.Show("Thanks for cshmai", "test");
    } private void Form1_Load(object sender, System.EventArgs e)
    {
    this.textBox1.Capture = false;
    }就是希望MessageBox关闭后,textBox1不要获得焦点
      

  6.   

    把焦点给其他控件,你可以把控件藏起来,譬如textbox的后面,这样界面上看不出来,-_-!
      

  7.   

    如果窗口就一个控件
    private void textBox1_GotFocus(object sender, EventArgs e)
    {

    MessageBox.Show("Thanks for cshmai", "test");
    }
    就是一个死循环了。
    如果不弹出 msgbox 可以
    private void textBox1_GotFocus(object sender, EventArgs e)
    {
    this.Focus();

    }
      

  8.   

    我现在就是死循环啊,555。
    我加上了
    if(TextBox.MouseButtons!= MouseButtons.Left)
    {
    return;
    }
    倒是不会死循环了,但是就不能触发GotFocus事件了,只能出去到别处再进来,要是一个控件就连切都没地方切了。还有还有,您调用的
    this.Focus();
    是让窗体获得焦点么,我做的是基于对话框的程序,调用这句没用好像~~
      

  9.   

    使用隐藏文本框textBox2;
    private void textBox1_GotFocus(object sender, System.EventArgs e)
    {
    MessageBox.Show("Thanks for cshmai", "test");
                                textBox2.Focus();
    } private void Form1_Load(object sender, System.EventArgs e)
    {
                                textBox2.Focus();
    }
      

  10.   

    如果窗口就一个控件,你的要求应该没有办法做到,如果有其他控件,你可以把焦点设置到某一控件,或者使用下面的代码
    private void textBox1_Enter(object sender, System.EventArgs e)
    {
    MessageBox.Show(DateTime.Now.ToString());
    textBox1.Enabled=false;
    textBox1.Enabled=true;
    }
      

  11.   

    在弹出模式窗口后面加上这一句
    this.Activate();
    就OK啦!
      

  12.   

    感谢楼上关注,但我试了,还是不行
    private void textBox1_GotFocus(object sender, System.EventArgs e)
    {
    MessageBox.Show("test");
    this.Activate();
    }
    就是这段代码,前面响应的事件为
    this.textBox1.GotFocus += new System.EventHandler(this.textBox1_GotFocus);我想让它不反复探messagebox,但又要每次GotFocus时出来~~~再次谢您
      

  13.   

    private void textBox1_GotFocus(object sender, System.EventArgs e)
    {
    MessageBox.Show("Thanks for cshmai", "test");
                               this.textBox1.Capture = false;
    } private void Form1_Load(object sender, System.EventArgs e)
    {
    this.textBox1.Capture = false;
    }就是希望MessageBox关闭后,textBox1不要获得焦点
      

  14.   

    关注了 我只想到了 多方一个control 然后 模态关闭后 让隐藏的这个得到焦点
      

  15.   

    To: 01070801(琪琪) 
    你知道
    this.textBox1.GotFocus += new System.EventHandler(this.textBox1_GotFocus);
    这个响应事件,在窗口加载显示的时候就触发这个事件了!
    你上面这一句写在什么地方的啊!
      

  16.   

    将onthercontrol.focus()和messagebox()交换一下位置就结了。
    先other.focus();
    然后MessageBox.show("");
    OK
      

  17.   

    使用下面的代码
    private void textBox1_Enter(object sender, System.EventArgs e)
    {
    textBox1.Enabled=false;
    MessageBox.Show(DateTime.Now.ToString());
    textBox1.Enabled=true;
    }
      

  18.   

    感谢这么多热心人啊~~net_boy(小明):
    我好像也试了,被隐藏的控件好像获得不了焦点了就,另外这样写技巧性代码会被经理骂的,Thank you all the samegj121(男儿当自强):
    那句话就写在InitializeComponent()中,自动生成的那里。好像就是加载时就调用了。不过我用
    if(TextBox.MouseButtons!= MouseButtons.Left)
    {
    return;
    }
    在前面先判断一下,就不会在加载时进去了,但新问题又出了,关闭对话框后textBox1仍然获取着焦点,但就不能触发GotFocus了,除非出去再进来,做不到“要每次GotFocus时出来”了。To XuDunYu(西门吹雪):
    嗯那,但要是只有一个Control没有other怎么办啊~~To xujiaoxiang() :
    不行不行,我之所以非要响应GotFocus这么恶心的接口,其实响应Click不就成了么……但是,我写的程序要在windows ce和xp都能运行的,就是说用的compact framework,而且要用1.1版本的。所以只好响应GotFocus了,我试着响应Click或者mousedown什么的,但怎么按鼠标都不响应的。To fanjiyong000:
    我正在尝试您的代码~~
      

  19.   

    To fanjiyong000:我记得这个代码我写过……也是反复弹dialog
      

  20.   

    this.Activate();
    MessageBox.Show("xxxx");
    这样应该行了吧!
      

  21.   

    private void textBox1_GotFocus(object sender, System.EventArgs e)
    {
    textBox1.Enabled=false;
    MessageBox.Show(DateTime.Now.ToString());
    textBox1.Enabled=true;
    }
      

  22.   

    我刚试完啦,第一下成,可后来又是反复出来了……555,有没有MFC那样的失去焦点的函数啊
      

  23.   

    回复 xujiaoxiang() 
    Thanks!
    我就用这办法了,如何结贴啊~~